2024年Clojure调查中分享您的想法!

欢迎!请查看关于页面以了解更多有关该功能的信息。

0
tools.deps

提供一个:git/url../../../../../../../../tmp/foobar(其中/tmp/foobar是系统上的git库)会导致:

`
构建类路径时出错。无法将org.eclipse.jgit.transport.TransportLocal转换为org.eclipse.jgit.transport.SshTransport
java.lang.ClassCastException: org.eclipse.jgit.transport.TransportLocal cannot be cast to org eclipse.jgit.transport.SshTransport

at clojure.tools.gitlibs.impl$fn$reify__829.configure(impl.clj:32)
at org.eclipse.jgit.api.TransportCommand.configure(TransportCommand.java:155)
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:235)
at org.eclipse.jgit.api.CloneCommand.fetch(CloneCommand.java:306)
at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:200)
at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:89)
at clojure.tools.gitlibs.impl$call_with_auth.invokeStatic(impl.clj:49)
at clojure.tools.gitlibs.impl$call_with_auth.invoke(impl.clj:41)
at clojure.tools.gitlibs.impl$git_clone_bare.invokeStatic(impl.clj:71)
at clojure.tools.gitlibs.impl$git_clone_bare.invoke(impl.clj:68)
at clojure.tools.gitlibs.impl$ensure_git_dir.invokeStatic(impl.clj:110)
at clojure.tools.gitlibs.impl$ensure_git_dir.invoke(impl.clj:100)
at clojure.tools.gitlibs$resolve.invokeStatic(gitlibs.clj:33)
at clojure.tools.gitlibs$resolve.invoke(gitlibs.clj:29)
at clojure.tools.gitlibs$procure.invokeStatic(gitlibs.clj:47)
at clojure.tools.gitlibs$procure.invoke(gitlibs.clj:41)
at clojure.tools.deps.alpha.extensions.git$eval894$fn__896.invoke(git.clj:41)
at clojure.lang.MultiFn.invoke(MultiFn.java:238)
at clojure.tools.deps.alpha$expand_deps.invokeStatic(alpha.clj:168)
at clojure.tools.deps.alpha$expand_deps.invoke(alpha.clj:152)
at clojure.tools.deps.alpha$resolve_deps.invokeStatic(alpha.clj:215)
at clojure.tools.deps.alpha$resolve_deps.invoke(alpha.clj:197)
at clojure.tools.deps.alpha.script.make_classpath$create_classpath.invokeStatic(make_classpath.clj:59)
at clojure.tools.deps.alpha.script.make_classpath$create_classpath.invoke(make_classpath.clj:52)
at clojure.tools.deps.alpha.script.make_classpath$run.invokeStatic(make_classpath.clj:70)
at clojure.tools.deps.alpha.script.make_classpath$run.invoke(make_classpath.clj:64)
at clojure.tools.deps.alpha.script.make_classpath$_main.invokeStatic(make_classpath.clj:109)
at clojure.tools.deps.alpha.script.make_classpath$_main.doInvoke(make_classpath.clj:84)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.lang.Var.applyTo(Var.java:702)
at clojure.core$apply.invokeStatic(core.clj:657)
at clojure.main$main_opt.invokeStatic(main.clj:317)
at clojure.main$main_opt.invoke(main.clj:313)
at clojure.main$main.invokeStatic(main.clj:424)
at clojure.main$main.doInvoke(main.clj:387)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.lang.Var.applyTo(Var.java:702)
at clojure.main.main(main.java:37)

`

Gitlibs应该处理本地仓库。

4 个答案

0

评论由:netpyoung发表

目前tools.gitlib不支持file:// url。

`
(defn- call-with-auth
([^GitCommand command]

(call-with-auth
  (.. command getRepository getConfig (getString "remote" "origin" "url"))
  command))

([^String url ^GitCommand command]
(cond

 ;; need to filtering like that.
 (and (instance? TransportCommand command)
      (str/starts-with? url "file"))
 (.call command)
 (and (instance? TransportCommand command)
      (not (str/starts-with? url "http")))
 (.. ^TransportCommand command (setTransportConfigCallback @ssh-callback) call)

: else (.call command))))
`

0
_评论由:alexmiller发表_

使用本地Git仓库与本地依赖相比有何价值?即


clj -Sdeps '{:deps {my/local {:local/root "../../../../../../../../tmp/foobar"}}}'
0

评论由:ajcummings发表

我认为使用本地Git仓库是有价值的,至少在我
的配置中是这样。

我们在工作中没有运行Git服务器;相反,我们的
仓库托管在NFS上。将工具.deps切换的动机之一是
我可以从这些Git仓库直接获取依赖项,而不是
通过我们的Maven仓库(该仓库也是
简化地在NFS上托管。

鉴于这种设置,我想要的解决方案是直接从Git
文件系统获取,包括对标签和历史记录的查看,以支持
-Sresolve-tags,deps-ancient等。使用git clone/checkout
然后将:local/root指向那里,并不能提供这种功能,也不
支持通过:sha选择版本。

我已经尝试的一个解决方案是通过ssh将连接洗掉到
另一个也挂载了NFS的机器。但这个方案对于我
的IT环境来说很脆弱,所以我并不愿意让我
的团队使用。因此,我们现在还是坚持通过
我们的内部Maven库来部署。

0
参考: https://clojure.atlassian.net/browse/TDEPS-93(由severeoverfl0w报告)
...