我正在实习并且他们正在使用SVN(尽管已经有一些关于转向hg或git的讨论,但这不是在不久的将来)。我喜欢git,所以我想使用git-svn与svn存储库进行交互,并能够进行本地提交和分支以及类似的东西(当然,在提交到svn之前进行重新定位)。但是,有一个轻微的皱纹,svn存储库布局有点奇怪。它基本上看起来像这样
/FOO
+-branches
+-tags
+-trunk
+-FOO
+-myproject
基本上,我的项目一直停留在trunk的子目录中,还有另一个项目也是trunk的子目录。如果我使用git-svn只复制我的项目的目录而不是root,它会混淆或导致任何问题吗?我只是想知道因为提交号码对于整个存储库而不仅仅是我的项目增加了,所以提交是否会被关闭或类似的东西?我可能不会将任何分支或标签推送到SVN,因为我更喜欢在git本地执行这些操作而且我不知道git-svn如何处理分支和标签,而且没有其他人使用它们所以我发现这样做的一点点。谢谢你的帮助!
答案 0 :(得分:1)
我在多项目多平台svn repo中使用git-svn。
我通常直接在我感兴趣的svn repo目录中拥有本地git repo点,并放弃对分支机构的任何原生支持等等,尽管我听到有关支持变得更好的好消息。 git-core文档中似乎有git svn分支支持。
我的方式:
git svn init http://repo.farts.com/svn/path/to/the/directory/of/project
git svn fetch
什么时候提交...
git stash
git svn rebase
git stash pop
git commit -am "Some really awesome stuff"
git svn dcommit
我对此没有任何麻烦。如果您已重新设置的代码发生了更改,则弹出存储会启动合并。 Rebase使历史保持线性。可能有一种更好的方法可以做到这一点,但我幸存下来,上面的过程加上git mergetool。
您还可以查看git svn附带的自定义布局选项,以指定主干,分支和标签相互关联的位置。您可以使用-T trunk -b branches -t标记分别指定其中的每一个 - 默认情况下这些是相对的,但您可以提供绝对路径。
另外,作为建议,我个人只会根据实习的敏感性使用SVN客户端。我说这不是git-town好公民的成员,但是源头控制可能是屁股的主要痛苦,也是人们的圣地 - 如果它给任何人带来一丝不便,它的几乎不值得。话虽这么说,如果你可以保持独立,而不是任何人用你的工具选择负担,快乐的git'ing; - )
约什