繁体   English   中英

如何将GIT存储库与SVN同步?

[英]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存储库:

  1. 将中继作为并行分支导入到您现有的Git存储库中

     cd GIT-REPO git svn clone --stdlayout SVN-URL . 
  2. 设置移植:

     TRUNK_HEAD=`git rev-parse trunk` MASTER_INIT=`git rev-list --reverse master | head -1` echo $MASTER_INIT $TRUNK_HEAD >.git/info/grafts 
  3. 在master分支中找到要附加到主干的范围,例如,仅将标记v2.0开始的更改附加到主干。

  4. 重新设置主干

     git checkout master git rebase --onto trunk v2.0 master 
  5. 提交到主干

     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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM