我使用遗留svn
个回购。但是,我想在本地计算机上享受git
的好处。
git init
我当前仓库的根,编写代码,并在本地(git commit
)和远程(svn commit
)独立提交代码。 git-svn
,但我不知道是否值得学习新工具细微差别的麻烦。我应该怎么做?
答案 0 :(得分:9)
我非常强烈主张git-svn
。我和我的一些同事试图在Subversion的顶部使用Git repro,这是一个由痛苦和恐怖组成的过程。
不可否认,这适用于Subversion 1.6.x;我怀疑1.7x会更好,因为它只有一个.svn
目录。
从存储库更新需要从Subversion中提取更新,然后使用Git提交更新。这是缓慢而乏味的(诚然,git-svn
的速度相当慢,但至少会自动化这个过程。)
另外,要么最终用Subversion下载每个提交并手动将其提交给Git,要么最终将一堆Subversion提交提交给Git存储库,如果你想要工作,$deity
会帮助你您的Git提交之间的Subversion修订。
Git无法处理空目录,Subversion要求它们的.svn
目录格式。这意味着您需要将.svn
存储库保留在Git存储库之外,因此任何git checkout
操作都需要单独的svn up
。
正如您所说,您需要单独承诺所有内容。
因此,分别使用Subversion和Git,你需要在Git和Subversion中完成几乎所有操作。这意味着一切都需要更长的时间,而且你会得到两个系统的所有缺点,同时它们都能很好地克服彼此的优势。
答案 1 :(得分:5)
使用git-svn,非常简单。
首先使用git svn clone
克隆您的存储库,然后git svn dcommit
您的工作或git svn rebase
最新更改。通过始终在主服务器上重新定位本地分支,确保您的历史记录始终是线性的,以便您可以将它们与git merge --ff-only
合并。
答案 2 :(得分:4)
最好的方法是迁移到git
并丢弃SVN。
但是,如果这不是一个选项,请使用git-svn
。
当单独提交git / svn时,你很可能最终只会很少提交SVN,这会导致其他开发人员以巨大的提交结束。
答案 3 :(得分:2)