我对Git比较陌生,但我发现在家工作很容易,我想在我们的项目存储在Svn存储库中的工作中使用它.不幸的是,存储库略微不标准,我无法克隆它们.当然,它们都有trunk,branches /和tags /,但是在命中实际项目目录之前,branch /和tags /都有子目录:
trunk/
branches/maintenance/release1
branches/maintenance/release2
...
branches/development/feature1
branches/development/feature2
...
tags/build/build1
tags/build/build2
...
tags/release/release1
tags/release/release2
Run Code Online (Sandbox Code Playgroud)
克隆后:
$ git svn clone -s --prefix=svn/ https://mydomain.com/svnproject
$ git branch -r
development
development@1340
maintenance
maintenance@1340
tags/build
tags/build@1340
tags/release
tags/release@1340
trunk
trunk@1340
Run Code Online (Sandbox Code Playgroud)
我没有得到任何实际的项目分支或标签.我实际上需要能够在主干,一个维护分支和一个开发分支上工作.我已经尝试过这种方法,除了修改配置的几个黑客,但没有什么对我有用.
有什么方法可以将我的非标准Svn项目的关键组件放到本地git存储库中,以便我可以轻松地在它们之间移动?
非常感谢.
更新:我应该补充一点,我不能批量切换到Git(尚).还有其他团队成员参与和国际存在.转型的后勤工作比我更愿意承担,直到我对Git更加满意; 正如我所提到的,我还是很新的.我几乎没有触及其功能的表面.
我正在使用git-svn来跟踪同一个svn存储库中的多个分支.通常情况下这很好,但今天我已经完成了一些重置和重新设置,突然我的分支机构不会再向正确的远程分支发送:
$ git branch
* master
a
b
$ git svn dcommit -n
Committing to svn://server/repo/trunk ...
$ git checkout a
$ git svn dcommit -n
Committing to svn://server/repo/branches/a ...
$ git checkout b
$ git svn dcommit -n
Committing to svn://server/repo/branches/a ...
Run Code Online (Sandbox Code Playgroud)
所以分支b将提交到branches/a目录而不是branches/b目录.
我试过更改跟踪的分支:
$ git branch --set-upstream b remotes/b
Run Code Online (Sandbox Code Playgroud)
和其他东西,但唯一有效的解决方案是删除分支b并重新创建它:
$ git branch -D b
$ git branch b remotes/b
$ git svn dcommit -n
Committing to svn://server/repo/branches/b ...
Run Code Online (Sandbox Code Playgroud)
现在我的问题是:git svn如何确定要提交的目录?我该如何修改这个目录?
谢谢,
乔纳斯