[英]How to synchronize a GIT repository with SVN?
我正计划成为一个开源项目的分支,但是我想切换到GIT。 该项目使用的是SVN,但是没有可用的TRAC,所以我不能在PC上没有SVN的情况下下载变更集(更不用说svn diff不允许二进制补丁了)。
有没有一种方法可以将我的GIT主存储库与SVN的HEAD / trunk同步,而无需在我的HDD上保留另一个项目?
您可以使用git-svn(1)将SVN与Git同步。
如果您已经有Git存储库,并且想与另一个SVN存储库绑定,则可以尝试某种voodoo,请参阅http://blog.experimentalworks.net/2009/07/git-voodoo/ 。
该博客显示了如何使用新创建的远程SVN存储库将现有的非git-svn Git存储库转换为启用了git-svn的Git存储库。 您可以稍微修改voodoo工作流程,以将现有的SVN存储库导入到Git存储库:
将中继作为并行分支导入到您现有的Git存储库中
cd GIT-REPO git svn clone --stdlayout SVN-URL .
设置移植:
TRUNK_HEAD=`git rev-parse trunk` MASTER_INIT=`git rev-list --reverse master | head -1` echo $MASTER_INIT $TRUNK_HEAD >.git/info/grafts
在master分支中找到要附加到主干的范围,例如,仅将标记v2.0开始的更改附加到主干。
重新设置主干
git checkout master git rebase --onto trunk v2.0 master
提交到主干
git svn dcommit
用法提示:通过将dcommit
与git-svn一起使用,您应确保不dcommit
提交空提交。 否则, dcommit
将失败。 要过滤掉空的提交,请尝试
git filter-branch --prune-empty
第一次dcommit
之前。
如果您可以访问SVN信息库,则可以在其中安装SubGit 。 赶紧跑
$ subgit install path/to/your/svn/repostiory
所有同步将自动执行(通过SVN和Git挂钩触发)。 在这种情况下,不仅主/主干,而且所有分支都将同步(尽管您可以配置其行为)。
免责声明 :我是该产品的开发人员之一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.