2012-02-24 80 views
2

我的企业使用svn作为源代码控制。在服务器上使用Git进行Subversion本地开发?

我想用我的开发git(分支是如此有用)。

你认为签出一个svn项目,在我的开发中使用本地git,没有问题,然后,用svn提交最终修改?

知道我们这样工作的时候有什么特别的吗?

回答

4

git-svn对我来说很好,但你必须做好准备,分支(在服务器上)或Subversion外部的一些更高级的功能可能不会流畅。在承诺任何事情之前测试你的用例。

1

我已经完成了一年多的时间,在适当地使用git之后没有什么问题。有几点需要注意的地方。

第一个建议是总是在dcommit之前执行“git svn dcommit --dry-run”!有时候你并没有意识到你实际上是在尝试从不同的分支进行大量的提交,例如git合并后。

二,我通常为自己从未在主分支上工作。我在一个git分支上工作,然后在我想把它放入svn之前,将它重新分配到master分支上。使用rebase而不是合并,因为svn需要在每个branch/trunk/tag上有一个“线性历史记录”。另外,了解rebase的作用以及如何摆脱困境(例如rebase --abort)。在我开始重新装订东西之前,我总是先创建一个“备份分支”。

因此,要推到SVN,这是我的工作流程:

git checkout master 
git svn rebase 
git rebase <my_working_branch> 
gitk (to review the changes) 
git svn dcommit --dry-run 
git svn dcommit 
0

你应该使用git - svn的这一点,它可以在几乎任何地方,而且运作非常好,即使有非常大的SVN回购。在使用git和svn时,我发现以下工作流程很有用。

git svn clone svn+ssh://pathtorepo localname 
git branch workingbranch 
git co workingbranch ... 
... work in branch 
git co master 
git merge workingbranch 
git svn dcommit 

这样你就可以提交,回滚,分裂,摘樱桃等你在workingbranch想一切办法,避免所有的问题颠覆可能有一个复杂的提交历史。

如果某样东西的SVN服务器上更改你刚才下面,让您掌握符合所有上游提交(保留SVN的线性历史master分支):

git co master 
git svn fetch 
git svn rebase 

然后你就可以使用正常的git功能来获取/合并/重新绑定到您的工作分支。

相关问题