2024年 Clojure 状况调查!中分享你的想法。

欢迎!请查看关于页面以获取关于此如何工作的更多信息。

+2 投票
tools.gitlibs

tools.gitlibs 无法抓取未包含在分支上的 Git SHA1s。例如,如果提交只由标签(例如,v1.2.3-acme1)引用,那么使用 clj -Spath 会因为以下错误而失败

Error building classpath. Missing unknown fb8143248fddb5177de6eb55ed21956782776c4a
org.eclipse.jgit.api.errors.JGitInternalException: Missing unknown fb8143248fddb5177de6eb55ed21956782776c4a

能否用以下补丁更新 tools.gitlibs?

---
 src/main/clojure/clojure/tools/gitlibs/impl.clj | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/main/clojure/clojure/tools/gitlibs/impl.clj b/src/main/clojure/clojure/tools/gitlibs/impl.clj
index b2eba18..a2ee828 100644
--- a/src/main/clojure/clojure/tools/gitlibs/impl.clj
+++ b/src/main/clojure/clojure/tools/gitlibs/impl.clj
@@ -17,7 +17,7 @@
     [org.eclipse.jgit.api Git GitCommand TransportCommand TransportConfigCallback]
     [org.eclipse.jgit.lib Repository RepositoryBuilder]
     [org.eclipse.jgit.revwalk RevWalk RevCommit]
-    [org.eclipse.jgit.transport SshTransport JschConfigSessionFactory]
+    [org.eclipse.jgit.transport SshTransport JschConfigSessionFactory TagOpt]
     [com.jcraft.jsch JSch]
     [com.jcraft.jsch.agentproxy Connector ConnectorFactory RemoteIdentityRepository]))
 
@@ -63,7 +63,7 @@
 (defn git-fetch
   ^Git [git-dir]
   (let [git (Git. (git-repo git-dir))]
-    (call-with-auth (.. git fetch))
+    (call-with-auth (.. git fetch (setTagOpt TagOpt/FETCH_TAGS)))
     git))
 
 ;; TODO: restrict clone to an optional refspec?
@@ -74,7 +74,8 @@
     (.. (Git/cloneRepository) (setURI url) (setGitDir (jio/file git-dir))
       (setBare true)
       (setNoCheckout true)
-      (setCloneAllBranches true)))
+      (setCloneAllBranches true)
+      (setTagOption TagOpt/FETCH_TAGS)))
   git-dir)

1 答案

0 投票

您能在公共仓库或如何设置环境以便我测试给出一个可重现的案例吗?我很乐意增加...

没事,我明白了
by
我发现第二个更改实际上并不是我们当前 jgit 版本中存在的方法,将其提升到更高版本需要做相当多的工作,我现在不想做这件事。它似乎也不必要,所以我把它省略了。正在发布 1.0.100 版本的工具.gitlibs,并包含这一更改,这将进入 tools.deps 和 clj 的下一个版本。
by
感谢快速回复和修复!
...