git-svn:有一个很好的分支和合并模式吗?

时间:2013-11-16 04:41:09

标签: git svn merge git-svn branching-and-merging

我正在我的机器上运行git-svn客户端。我希望有一个类似于标准git分支和合并模式的模式,其中你有一个从trunk分支的开发分支,你有几个功能或bug修复分支从开发分支扩展。

我遇到的问题是我无法弄清楚如何使用git-svn完成所有工作。我知道合并是一种带有香草颠覆的痛苦,而且对于香草git来说它很好,但它也变成了git-svn的痛苦。

那么....最佳做法是什么?你怎么能用git-svn自信地分享和合并?它的开发实践是什么?

我想遵循这种模式:

* Master
|\
| * Development
| |\
| | * Feature
| | |
| | * a commit to feature
| |\|
| | * merge Development into Feature
| | |
| |/|
| * | merge Feature into Development
 ... etc

非常感谢任何帮助!!

修改

只是为了澄清 - 每个git分支应该与svn分支对应。这是一个团队工作流程,团队成员应该能够处理功能和错误修复分支。

1 个答案:

答案 0 :(得分:0)

简而言之:

  • 分支机构服务器端
  • 同步合并单向(从主干到分支/功能)
  • 一次性合并(重新整合)(这将关闭分支)

这是我目前推荐的基于某些笔记的svn的工作流程。 中间的单词<和>是占位符。

<强>提示:

T1:使用符号“^ /”来引用您的基本存储库。 从项目的任何位置,您都可以使用以下命令列出存储库:

svn list ^/<repo_path>

T2:到现在你正在使用哪个分支

svn info | grep URL

<强>建议:

R1:不要检查顶级项目目录(包含主干/分支/和标记/的目录),而不是主干目录本身,即:

不要这样做:

svn checkout <BASE_URL>/svn/<proj>

但是:

svn checkout <BASE_URL>/svn/<proj>/trunk workdir

并使用开关。

R2-分支时,始终在服务器端进行操作以避免复制。

dont'do:

svn cp workdir/trunk workdir/branches/feature

做的:

svn cp ^/trunk ^/branches/feature

接下来是:

cd <workdir_path>
svn sw ^/branches/feature

R3:只从主干到你的分支合并(同步)。

cd <workdir_path>
svn merge ^/trunk

R4:要在另一个方向上合并(从分支到主干),请使用reintegrate merge。

svn up
svn switch ^/trunk
svn merge --reintegrate ^/branches/<feature>
(resolve conflicts and ...)
svn ci

例外:如果您需要对主干进行挑选,您可能会考虑使用--ignore-ancestry(以避免与历史记录并发)