最高0.13.2-M1的SBT仅支持git clone和git checkout。
git clone 用于当 URL 不包含 # 以指向分支或提交时,例如
git:file:///Users/jacek/sandbox/so/sbt-git/git-repo
git checkout 在 URL 中有 # 指向分支或提交时执行,例如
git:file:///Users/jacek/sandbox/so/sbt-git/git-repo/#a221379c7f82e5cc089cbf9347d473ef58255bb2
当我 commit'ed 对 git 存储库进行更改时,我还必须更新 build.sbt 中的提交哈希,以便在 SBT 项目中引用更改(下面的 val v)。
lazy val v = "a221379c7f82e5cc089cbf9347d473ef58255bb2"
lazy val g = RootProject(uri(s"git:file:///Users/jacek/sandbox/so/sbt-git/git-repo/#$v"))
lazy val root = project in file(".") dependsOn g
随着 git 存储库中的更改,SBT 项目必须是reload'ed,这样才能运行新的签出并刷新项目。
[root]> reload
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Loading project definition from /Users/jacek/sandbox/so/sbt-git/project
Cloning into '/Users/jacek/.sbt/0.13/staging/24535507588417c1c2dc/git-repo'...
Checking connectivity... done
[info] Set current project to root (in build file:/Users/jacek/sandbox/so/sbt-git/)
[root]>
这很痛苦,但可以解决问题(并让您使用远程 git repo 跟踪您的位置)。
您可能还会发现Can multi-projects from GIT be used as SBT dependencies? 很有用。