Ответ 1
SBT до 0.13.2-M1 поддерживает только git clone
и git checkout
.
git clone
используется, когда URL-адрес не содержит #
для указания на ветку или фиксацию, например
git:file:///Users/jacek/sandbox/so/sbt-git/git-repo
git checkout
выполняется, когда URL-адрес имеет #
в URL-адресе, указывающем на ветку или фиксацию, например
git:file:///Users/jacek/sandbox/so/sbt-git/git-repo/#a221379c7f82e5cc089cbf9347d473ef58255bb2
Когда я commit
изменил репо на 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, поэтому можно выполнить новый checkout и обновить проект.
[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).
Вы также можете найти Можно ли использовать несколько проектов из git в качестве зависимостей SBT?.