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版本上还没有的方法,升级到很高的版本将需要进行相当多的工作,我目前不想做这项工作。这也似乎是不必要的,所以我只是把它留出来了。正在准备发布带有该变更的工具.gitlibs 1.0.100版本,该版本将包含在下一个版本的tools.deps和clj中。
谢谢您的快速回复和修复!
...