我正在我的机器上运行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分支对应。这是一个团队工作流程,团队成员应该能够处理功能和错误修复分支。
答案 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(以避免与历史记录并发)