gpt4 book ai didi

svn - 需要关于使用分支和合并回主干的帮助/建议

转载 作者:行者123 更新时间:2023-12-02 00:32:00 31 4
gpt4 key购买 nike

我的问题是,当按照下面的程序合并时,在最佳实践场景中,“将分支折叠回主干”程序的最后一步是正确的方法吗?

我已经使用 svn 很多年了。在我的个人项目中,我总是毫不犹豫地在主干上愉快地进行修改,并且在很长一段时间内以单行线性方式进行版本控制已经接近完美。简单高效。一切都很幸福,直到有一天我想要更多地控制 3rd 方库。

今天,我参与了一个项目,我觉得这个项目已经超出了直接从树干的方法。我有多个 3rd 方库,有些每周更改一次,我真的需要更多地控制进入的内容。我需要能够查看 3rd 方库版本之间的特定变更集并跟踪我对特定库所做的更改。我见过几次代码库变得非常困惑,并且很难在没有经验的 buildmaster 的情况下恢复到可用状态,我不能在时间上在这里出错。

所以我研究了供应商分支,在这里和那里阅读了一些文章。我有一本很棒的“使用 Subversion 进行版本控制”一书,但是我看到的示例有时在方法上是矛盾的,我想弄明白“分支”的含义。我正要关注approach given on this post by Evan Weaver .

我在下面列出了程序,我关心的是最后一节“将分支折叠成树干”。过去与我合作的构建管理员似乎通常将分支变更集“合并”到主干上,我认为分支甚至都没有被删除。这是一种正确的方法吗?

创建分支

1 - 注意当前的头部修订:

    svn info svn://server.com/svn/repository/trunk | grep Revision

2 - 将主干的干净远程副本复制到分支文件夹中。给它起个名字。我们将其命名为 your_branch,将 HEAD_REVISION 替换为您在步骤 1 中记下的修订号:
svn cp svn://server.com/svn/repository/trunk \
svn://server.com/svn/repository/branches/your_branch \
-m "Branching from trunk to your_branch at HEAD_REVISION"

3 - 将您的本地结帐切换为指向新分支(这不会覆盖您的更改):
 svn switch --relocate \
svn://server.com/svn/repository/trunk \
svn://server.com/svn/repository/branches/your_branch

4 - 检查您的本地结帐现在肯定是 your_branch,并且您可以更新:
svn info | grep URL
svn up

5 - 如有必要,提交您的新更改。

更新分支

您已经在 your_branch 上开发了一段时间,因此还有其他人在主干上,现在您必须将他们的更改添加到 your_branch。

1 - 首先,更新您的分支结帐并提交任何未完成的更改。

2 - 搜索 Subversion 日志以查看您上次合并更改的修订号(或原始分支的创建时间,如果您从未合并过)。这对于成功合并至关重要:
svn log --limit 500 | grep -B 3 your_branch

3 - 还要注意当前的头部修订:
svn info svn://server.com/svn/repository/trunk | grep Revision

4 - 将主干上最后合并的修订版和主干上的主要修订版的差异合并到 your_branch 工作副本中,将 LAST_MERGED_REVISION 替换为步骤 2 中注明的修订号,将 HEAD_REVISION 替换为步骤 3 中注明的修订号:
  svn merge -r LAST_MERGED_REVISION:HEAD_REVISION \
svn://server.com/svn/repository/trunk .

5.a - 在输出中查找错误。能找到所有文件吗?不应该删除的东西被删除了吗?也许你做错了。如果您需要恢复,请运行 svn revert -R
5.b - 如果在 5.a 中一切正常,检查冲突,解决任何发现的冲突:
svn status | egrep '^C|^.C'

6 - 提交合并,用步骤 4 中的确切命令内容替换 COMMAND。:
svn ci -m "Merged changes from trunk to your_branch: COMMAND"       

将 Twig 折回树干

嘿, your_branch 完成了。现在它必须成为主干。

1 - 首先,按照上一节中的每个步骤(“更新分支”),以便 your_branch 与主干上的任何最近更改同步。

2 - 完全删除中继:
svn del svn://server.com/svn/repository/trunk

3 - 将 your_branch 移​​动到旧的主干位置:
svn mv svn://server.com/svn/repository/branches/your_branch \
svn://server.com/svn/repository/trunk

4 - 将您的工作副本重新定位回主干:
svn switch --relocate \
svn://server.com/svn/repository/branches/your_branch \
svn://server.com/svn/repository/trunk

完毕!

请对此程序的任何建议、评论或反馈表示赞赏。

最佳答案

如果您还没有这样做,我建议您阅读 branching + merging section here .

您引用的帖子很旧(2007 年 8 月)并且已经过时。从 subversion 1.5(2008 年 6 月)开始,合并跟踪有了很大改进(您可以创建分支并执行合并,而 subversion 实际上会为您跟踪哪些修订已经从主干中合并了)。这在 subversion 1.6(2009 年 3 月)中得到了进一步改进。

我特别不喜欢 这个建议

2 - Delete trunk completely

svn del svn://server.com/svn/repository/trunk



作为管理主干的一种方式。这充其量似乎有点容易出错(如果两个功能分支想要同时合并回来会发生什么)。我倾向于分享 most recent comment on the post 的观点.

相反,当您准备好这样做时,您可以执行“重新整合”合并以从您的分支合并回主干。这会将相关变更集从您的分支应用到主干。

关于svn - 需要关于使用分支和合并回主干的帮助/建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6381537/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com