首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用subgit镜像进行单向同步

使用subgit镜像进行单向同步
EN

Stack Overflow用户
提问于 2015-04-02 05:22:13
回答 1查看 1K关注 0票数 1

我已经设置了子git来将一个组合svn存储库镜像到git。我只想用svn->git的方式。无论如何,我没有权利提交svn,所以subgit在试图同步回svn (git->svn)时会附带错误消息。有什么办法可以做到这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-02 11:07:34

如果不将一些Git分支转换为SVN,同时保持它们与SVN分支的同步,就不可能支持推送一些Git分支。因此,解决方案是使用一组Git分支,同时保持另一组分支与SVN同步。应该手动将这些同步分支合并到第一组的分支中。使用SubGit有几种方法可以做到这一点。

方法1.使用单独的命名空间。例如,您可以在使用refs/heads/svn/*时将refs/tags/svn/*refs/heads/*同步到SVN。为此,请在SubGit配置文件中使用以下选项:

代码语言:javascript
复制
trunk = trunk:refs/heads/svn/master
branches = branches/*:refs/heads/svn/*
tags = tags/*:refs/tags/svn/*
shelves = shelves/*:refs/shelves/svn/*

因此,当您克隆这样的存储库时,SVN trunk会被翻译成refs/remotes/origin/svn/master,并且您应该定期使用git merge手动合并该分支,使您的本地refs/heads/master或多或少地与SVN更新。

方法2.自SVN 3.0 (或发布前的3.0.0-EAP版本)以来,您可以将与SubGit同步的所有分支限制为一个或多个分支(删除其他分支/标记/货架选项):

代码语言:javascript
复制
trunk = trunk:refs/heads/master
branches = branches/branch1:refs/heads/branch1
branches = branches/branch2:refs/heads/branch2

在此之后,refs/heads/branch1refs/heads/branch2refs/heads/master将与SVN同步,而refs/heads/branch3则不会同步。

方法3.从SubGit 3.0 (或3.0.0-EAP版本直到发布)开始,您可以从同步中排除一个或多个分支:

代码语言:javascript
复制
trunk = trunk:refs/heads/master
branches = branches/*:refs/heads/*
tags = tags/*:refs/tags/*
shelves = shelves/*:refs/shelves/*
excludeBranches = branches/nosync1
excludeBranches = branches/nosync2

此配置同步了除refs/heads/nosync1refs/heads/nosync2之外的所有refs/heads/nosync1branches/nosync2,因为如果它们是同步的,则它们将被转换为被忽略的branches/nosync1branches/nosync2

实际上,你并不局限于这些接触,但你可以根据你的需要混合它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29405509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档