请在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版本中不存在该方法,升级到更高版本的工作量相当大,我现在不想做这件事情。这看起来也不是必需的,所以我将其省略了。正在准备以更改发布 tools.gitlibs 1.0.100 版本,这将进入下一个版本的 tools.deps 和 clj。
感谢快速回复和修复!
...