我听说可以在开发人员计算机上拥有本地Git存储库,同时将源代码的主副本保存在svn存储库中。将本地Git存储库与主Subversion版本库一起使用
一个很好的用例是你有一个每个开发者都使用的中央svn仓库。一名开发人员偶尔会下线,并希望跟踪他/她离线时所做的更改。当开发人员重新上线并可以访问svn时,他们的工作副本修改可以检查到svn。在没有使用Git本地发生的更改历史记录时,我很好,当将这些文件签入svn时。
有人可以概述如何最好地把它关掉吗?有没有这样的工作陷阱?
我听说可以在开发人员计算机上拥有本地Git存储库,同时将源代码的主副本保存在svn存储库中。将本地Git存储库与主Subversion版本库一起使用
一个很好的用例是你有一个每个开发者都使用的中央svn仓库。一名开发人员偶尔会下线,并希望跟踪他/她离线时所做的更改。当开发人员重新上线并可以访问svn时,他们的工作副本修改可以检查到svn。在没有使用Git本地发生的更改历史记录时,我很好,当将这些文件签入svn时。
有人可以概述如何最好地把它关掉吗?有没有这样的工作陷阱?
你可以用this tutorial这样的东西作为起点。我也读了this tutorial。
这种工作模式有几个缺陷。最重要的是,你不能使用svn版本1.5合并信息,并期望这通过git生存。这是一个主要的缺点,如果你使用(可以说相当体面的)svn 1.5合并功能。
git-svn的手册页还包含一些您应该了解的“注意事项”部分。一旦我理解了所有的注意事项,我就明白使用这种设置的好处比我的具体情况下的实际成本要低。所以我用我的精力去说服项目转,而不是与git,这是我刚succeded在
我认为git-svn更好的用例是,如果你被迫使用中央svn仓库,但你想亲自使用git。或者也许团队中的大多数人现在更喜欢与svn合作。使用git-svn你不会失去在本地git仓库中提交的历史。
如果您从头开始设置新的存储库和/或可以自由选择,我会选择其中一个。 git-svn可以很好地工作,但你会一直在与两个系统之间的'阻抗不匹配'作斗争。
如果它只是一个集中式模型,您正在寻求实现,那么公共git存储库可以用作中央存储库。请参阅setting up a shared repository上的Git用户手册部分。
一个解决方案,我会尝试是:使用SVN
说你的SVN回购是在SVN + SSH://用户名@ svn_server/SVN/your_repo
和你的SVN仓库有一个 “正确” 的布局(树干,树枝,标签) 这里的工作流程我已经使用了几个月了:
1。'MKDIR your_repo'
2. 'CD your_repo'
3.'的git svn的克隆-s SVN + SSH://用户名@ svn_server/SVN/your_repo。'(介意点)
4等待这取决于你的资料库:)的大小而]
现在您的GIT‘主人’跟踪SVN主干
你也可以做一个跟踪分支像你的通常做使用Git如果你在一些分支工作
5.传统砍砍砍
6.更新你的克隆“混帐SVN取& &混帐SVN变基”
7.“推”您对svn的更改与'git svn dcommit '
更多的好东西
定义按照你的.gitconfig方便别名:
1.别名' spull '它代表SVN-拉这样的:'!spull =混帐SVN取& &混帐SVN变基 '
2.别名' spush '它代表SVN推这样的:'!spush =混帐SVN dcommit'
这些别名转工作流程,以纯效益: 克隆/砍砍/spull/spush - >利润
的svn:externals的
我找不到这是在互联网上的一个很好的解决方案,所以我自己做了一个:)
http://github.com/sushdm/git_svn_externals它还不完美,但它应该明确地让生活变得更容易。
对我很好,希望它对你有帮助。