[英]Use local Git repository with a master Subversion repository
我听说可以在开发人员计算机上安装本地Git存储库,同时保留存储在svn存储库中的源代码的主副本。
一个很好的用例是你有一个每个开发人员使用的中央svn存储库。 一位开发人员偶尔会离线,并希望跟踪他/她在离线时所做的更改。 当开发人员重新上线并可以访问svn时,他们的工作副本修改可以检入svn。 当文件被检入svn时,我很好地失去了Git本地发生的变化的历史。
有人可以概述如何最好地解决这个问题吗? 像这样工作有任何陷阱吗?
假设您的SVN 仓库位于svn + ssh:// username @svn_server / svn / your_repo
你的SVN存储库有一个“正确的”布局(主干,分支,标签)这是我几个月来一直使用的工作流程:
1.'mkdir your_repo '
2.'cd your_repo '
3.'git svn clone -s svn + ssh:// username @svn_server / svn / your_repo。 '(记住点)
4. [等待一段时间,具体取决于您的存储库的大小:)]
现在你的GIT'master'跟踪SVN中继
如果你在某个分支上工作,你也可以像git一样使用git创建一个跟踪分支
5.传统的hack hack hack
6.使用' git svn fetch && git svn rebase '更新你的克隆
7.使用' git svn dcommit '将你的更改“推”到svn
更好的东西
在.gitconfig中定义以下方便的别名:
1.别名' spull '代表svn-pull如下:' spull =!git svn fetch && git svn rebase '
2.别名' spush '代表svn-push,就像这样:' spush =!git svn dcommit '
这些别名转工作流程,以纯效益: 克隆 / 砍砍 / spull / spush - > 利润
SVN:外部组件
我无法在互联网上找到一个好的解决方案,所以自己做了一个:)
http://github.com/sushdm/git_svn_externals它还不完美,但它应该能够让生活变得更加轻松。
非常适合我,希望它能帮到你。
我会尝试的一个解决方案是:
我认为git-svn更好的用例是你被迫使用中央svn存储库,但是你想亲自使用git。 或者也许团队中的大多数人现在更愿意使用svn。 使用git-svn,您不会丢失在本地git存储库中提交的提交历史记录。
如果您从头开始设置新的存储库和/或可以自由选择,我会选择其中一个。 git-svn运行良好,但你总是会对抗两个系统之间的“阻抗不匹配”。
如果它只是一个您希望实现的集中模型,那么公共git存储库可以用作中央存储库。 有关设置共享存储库的信息,请参阅Git用户手册部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.