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

您能否提供一个可在公共仓库中复现的情况,或者如何设置如此情况,以便我可以进行测试?我很乐意添加...

明白了
by
我发现第二个更改实际上并不是我们在使用的jgit版本中存在的那个方法,而要升级到后来会相当多的工作,我现在不想去做。这也似乎不是必要的,所以我只是留出了那个。为了发布包含此更改的工具.gitlibs 1.0.100版本,这将纳入接下来工具.deps和clj的版本中。
by
感谢您的快速回复和修复!
...