自动检测重命名

作者:Steve Losh
日期:2009-09-30

Mercurial 能够识别出哪些添加/删除操作实际上是重命名, 如果 你使用了适当的命令的话。

hg addremove 命令在你手动的对大量文件进行操作的时候会显得很方便。你可以使用你喜欢的任意方式(Finder,windows Explorer,shell等等)来改变原有结构,然后再运行 hg addremove 命令让 Mercurial 来识别你做了哪些改变。

这有一个 hg addremove 鲜为人知的特性,就是当你移动或重命名一个文件时它能将其识别并把重命名操作记录为删除和添加操作代替。将操作记录为重命名会让 Mercurial 合并变更更智能。

为了使 Mercurial 能够检测出重命名,你可以把 hg addremove--similarity 选项一起使用:

$ hg addremove --similarity 100

那个数字是个百分值。在此例中,Mercurial 会将一对添加/删除操作认为是一个重命名操作仅仅当添加的文件被确认为(100%相似)是被删除的文件时。

使用一个小些的数字能够匹配包括进行过其他变更的重命名操作,但是会增加误报的风险。一个好的习惯是将所有你的文件与目录变更作为依次提交,并把对这些文件的 文本内容 变更作为另一次提交。

如果你发现你对这个操作使用得相当频繁的话你可以通过 修改你的~/.hgrc文件--similarity 100 作为默认选项:

[defaults]
addremove = --similarity 100

注意,使用 [defaults] 会影响到 所有 运行的命令,包括当其作为脚本运行时亦是。