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

标签 svn git repository

我计划创建一个开源项目的分支,但我想切换到 GIT。该项目正在使用 SVN,但没有可用的 TRAC,因此我无法在 PC 上没有 SVN 的情况下下载变更集(更不用说 svn diff 不允许二进制补丁)。

有没有办法将我的 GIT 主存储库与 SVN 的 HEAD/trunk 同步,而不在我的 HDD 上保留另一个项目?

最佳答案

您可以使用 git-svn(1) 将 SVN 与 Git 同步.

如果您已有 Git 存储库,并且想要与另一个 SVN 存储库绑定(bind),您可以尝试某种 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 分支中要追加到 trunk 的范围,例如只有从 tag v2.0 开始的更改才会追加到 trunk。

  4. 重新设置主干基数

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

    git svn dcommit
    

使用提示:通过将移植与 git-svn 结合使用,您应该确保不会 dcommit 空提交。否则,dcommit 将失败。要过滤掉空提交,请尝试

git filter-branch --prune-empty

第一次dcommit之前。

关于svn - 如何将GIT存储库与SVN同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5368643/

相关文章:

ssh - gitlab.com SSH连接超时

svn - 未能在 SVNRDUMP 加载中获得锁定

svn - 如何在 Windows Server 2008 上使用命令提示符或其他 GUI 工具管理 Subversion 的访问权限?

git - 在TortoiseGit中,哪个是MERGE_HEAD,哪个是HEAD?

git pull 和 git push 一气呵成

java - @Autowired 不注入(inject) Spring Data JPA 存储库 - NullPointerException

git - 我如何托管 Git 存储库并自行管理内容托管?

svn - 设置 JetBrains YouTrack 以连接到 SVN

eclipse - 乌龟相当于 'replace with latest from repository"?

Git 子树只有一个文件或目录