2024 Clojure 状态调查! 分享您的想法。

欢迎!有关本网站如何运作的更多信息,请参阅 关于 页面。

+2
tools.gitlibs

tools.gitlibs 不能获取不在分支上的 Git SHA1。例如,如果一个提交只由标签引用(例如,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

您能否提供一个在公共仓库中的可重现案例或如何设置一个案例以供我测试?我愿意添加...

nvm,我明白了
我发现第二次更改实际上并不是我们现在使用的 jgit 版本中存在的,而_into 更新版本需要做更多的工作,我现在不想做。而且这似乎也不是必要的,所以我只是把它留出来了。正在准备使用更改发布tools.gitlibs 1.0.100版本,并将将该更改纳入工具.deps和clj的下一个版本中。
感谢快速的回复和修复!
...