首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SVN合并的基本原理

SVN合并的基本原理
EN

Stack Overflow用户
提问于 2013-03-07 06:26:41
回答 1查看 287关注 0票数 2

我的问题涉及到SVN合并机制的一些基本原理。我是不报告合并问题在这里。此外,我已经读过SVN书的合并章节(不是新手)。

我在主干上有10个修订版,我想将修订版5、6、7、8、9和10合并到一个特定的标签上。

通过运行6次合并操作,我可以在tortoise SVN中成功地进行合并。每次我只指明一次修订(即5、6、7、8、9、10)。

如果我对SVN修订的理解是正确的,那么第10版(头版)就有了以前版本的所有修正,即5、6、7和9。因此,只要运行一次合并操作,即指定修订10,就可以节省时间。

对我的问题的明显反应是,我应该具体说明“修订范围”。

我的问题是,为什么甚至指定一个范围时,修订10将包含所有以前的修订(http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.basic.in-action)?难道我不能只通过指定一个修订(第10号)来进行合并,并期望SVN进行正确的合并吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-07 10:01:44

实际上,svn merge命令以diff (或changeset)作为参数。因此,当您使用这样的命令进行合并时:

代码语言:javascript
复制
svn merge -c10 URL

事实上,这和:

代码语言:javascript
复制
svn merge -r9:10 URL

并且正在合并第10次提交到存储库所带来的更改。

此外,svn:mergeinfo属性将指示与修订10相对应的变更集已被合并,因此后续的合并将更智能,并且不会再次尝试合并该变更集。

因此,要具体回答您的问题,当您想要合并对应于特定范围的更改时,可以为svn merge命令指定一个修订范围。

文献资料中有一个关于更改和更改的通知

在Subversion中,全局修订编号N为存储库中的树命名:这是存储库处理Nth提交的方式。它也是隐式变更集的名称:如果将树N与树N1进行比较,就可以得到提交的确切修补程序。由于这个原因,我们很容易认为修订N不仅仅是一棵树,而且也是一种变化集。如果您使用问题跟踪器来管理bug,则可以使用修订编号来引用修复错误的特定补丁--例如,“此问题已由r9238修复”。然后,有人可以运行svn日志-r 9238来读取修复错误的确切更改集,并运行svn diff -c 9238来查看修补程序本身。Subversion的svn merge命令(您很快就会看到)能够使用修订编号。您可以在合并参数中将特定变更集从一个分支合并到另一个分支:将-c 9238传递给svn合并将变更集r9238合并到您的工作副本中。

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

https://stackoverflow.com/questions/15264557

复制
相关文章

相似问题

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