使用Mercurial的“hg copy file file2”的实际使用示例是什么?

时间:2010-10-16 02:13:48

标签: mercurial dvcs

Mercurial有

hg copy file file2

命令和更改可以在第一次合并时传播更改。 O'Reilly Mercurial书中说,Mercurial是唯一能够做到这一点的源控制系统。

这有什么实际用途?该书提到制作文件的副本并进行错误修复,因此错误修复可以传播回原始文件,但是通过版本控制,我们通常不直接编辑文件,如果错误修复有效,那么直接提交那个文件?或者即使由于某种原因我们需要制作副本,我们可以cp file file2,测试修复,然后mv file2 file将该文件移回原始文件,然后提交文件。使用hg copy功能的好例子是什么?

3 个答案:

答案 0 :(得分:2)

这是我个人使用过的一个例子。具有复杂配置文件的软件包有时会提供名称为universe-wsgi.ini.sample(hi,galaxy)的示例,作为安装的一部分,您应该将.ini.sample文件复制为.ini文件。如果你这样做:

hg copy universe-wsgi.ini.sample universe-wsgi.ini

然后,每当您使用hg pull ; hg update更新软件时,示例中的新设置都会添加其默认值为您的自定义版本。

答案 1 :(得分:0)

假设您在文件中有基类。您希望创建派生类,以便执行hg copy并通过删除某些方法并对其他方法进行更改来自定义派生类。现在,您在另一个分支的同事修复了基类中的错误。当您进行合并时,该错误修复将合并到您的派生类和基类中。

答案 2 :(得分:0)

我已经看到很多关于这个话题的混淆,不可否认的是我起初太过分了。根据我的理解,这个用例如下。

如果您正在制作文件的副本,而其他人可能同时处理同一文件,或者在与更改集重叠的时间点以轻量级或实际分支方式分叉/分支,则此文件为被复制并可能被修改,这是hg拷贝的候选者。

它解决了从未来的变化中对该文件进行回归的问题,直到知道该分支的其他“头”存在为止。

它似乎没有使用的是:

  • 定期保持文件同步,并保持最新版本,这些文件是从原始文件
  • 复制的

问题变得复杂,特别是一旦你进入重新分解。将更改应用于很久以前复制的文件是不可取的。看起来如果你将复制文件的开发保存在一个完全独立的分支中,它只会这样工作,但是一旦两个分支再次合并在一起,hg copy将不再符合你的预期。

我的参考:http://hgbook.red-bean.com/read/mercurial-in-daily-use.html