gpt4 book ai didi

svn - 在被认为有害的 SVN 子目录上提交和合并?

转载 作者:行者123 更新时间:2023-12-04 01:40:53 25 4
gpt4 key购买 nike

我们的主 SVN 项目根目录中有几个大型子项目。
在使用我们的发布分支时,我只提交和合并我的子项目,主要是因为它更快。

然而,一位同事指出了这个reference to merging subdirectories in Version Control with Subversion (又名“SVN 书”):



不幸的是,这就是警告的范围。链接部分也没有给出解释。

提交和合并 SVN 子目录对发布分支有害吗?
短期功能分支怎么样?

最佳答案

一种可能的解释是您可能忘记了更改集的某些部分。

如果您正在合并已 check out 的子目录之外的覆盖文件的更改集,那么您总是有可能忘记合并这些文件。

例如,如果您在主干上有这样的提交:

r5 | rich | 2009-04-16 22:22:46 +0200 (Thu, 16 Apr 2009) | 2 lines
Changed paths:
M /trunk/subdir1/main.c
M /trunk/subdir2/main.c

Change some stuff

然后你可以从你的分支“稳定”中 checkout subdir1,然后你可以像这样合并更改集 r5:
$ svn co http://example.com/svn/branches/stable/subdir1
$ cd subdir1
$ svn merge -c 5 http://example.com/svn/trunk/subdir1 .
--- Merging r5 into '.':
U main.c
$ svn ci -m"Merged r5 from trunk"

但这只会合并修订版 5 的一半。更糟糕的是,如果你回去查看日志,它现在会显示:
$ svn log -g http://example.com/svn/
...
------------------------------------------------------------------------
r5 | rich | 2009-04-16 22:22:46 +0200 (Thu, 16 Apr 2009) | 2 lines
Changed paths:
M /trunk/subdir1/main.c
M /trunk/subdir2/main.c
Merged via: r6

Change some stuff

所以看起来你已经合并了整个提交,而实际上你只合并了其中的一部分。当然 r6 确实显示稳定分支上只有 1 个文件发生了变化。
------------------------------------------------------------------------
r6 | rich | 2009-04-16 22:28:16 +0200 (Thu, 16 Apr 2009) | 1 line
Changed paths:
M /branches/stable/subdir2
M /branches/stable/subdir2/main.c

Merge revision 5 from trunk

有人必须记住或注意,只有一部分变更集被合并,其余的需要做。不使用子目录合并可以避免这个问题。

有时您真的不想合并以前的所有提交,而上述场景正是您打算做的。在这种情况下,最好添加一个描述您意图的良好提交消息。

关于svn - 在被认为有害的 SVN 子目录上提交和合并?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/757831/

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