我使用旧版svn
存储库。但是,我想享受git
在我的本地机器上的好处。
- 第一个选项是
git init
我当前 repo 的根,编写代码,并在本地(git commit
)和远程(svn commit
)独立提交代码。 - 第二个选项是
git-svn
,但我不知道是否值得学习新工具的细微差别。
我该怎么办?
我会非常强烈地提倡git-svn
. 我自己和我的一些同事尝试在 Subversion 之上使用 Git repro,这是一个由痛苦和恐惧组成的过程。
诚然,这是针对 Subversion 1.6.x 的;我怀疑使用 1.7.x 会更好,因为它只有一个.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 中执行几乎所有操作。这意味着一切都需要更长的时间,并且您会得到两个系统的所有缺点,而它们都可以很好地利用彼此的优势。
使用 git-svn,真的很简单。首先克隆您的存储库,git svn clone
然后您可以使用git svn dcommit
您的工作或git svn rebase
最新更改。通过始终将本地分支重新定位在 master 上,确保您的历史始终是线性的,以便您可以将它们与git merge --ff-only
.
最好的方法是迁移到git
并丢弃 SVN。
但是,如果这不是一个选项,请使用git-svn
.
当单独提交到 git/svn 时,你很可能最终只很少提交到 SVN,这会导致其他开发人员最终提交大量文件。