【发布时间】:2012-08-15 09:57:38
【问题描述】:
我在 repo 中重命名了几个文件,并对它们进行了一些更改。现在,我只想提交我重命名文件的事实,然后分别提交更改。这在 Mercurial 中可行吗?
我看到的一个选项是搁置所有更改,然后手动记录所有重命名。我想知道是否有更自动化、更不容易出错的方式。
【问题讨论】:
我在 repo 中重命名了几个文件,并对它们进行了一些更改。现在,我只想提交我重命名文件的事实,然后分别提交更改。这在 Mercurial 中可行吗?
我看到的一个选项是搁置所有更改,然后手动记录所有重命名。我想知道是否有更自动化、更不容易出错的方式。
【问题讨论】:
Mercurial 没有内置的方法来执行此操作 - 提交将始终记录重命名和新文件内容。
但是,您可以通过几个步骤来完成。如果工作副本父级是 X,则执行:
提交混合的重命名和更改,称之为 Y
提取重命名并将其提交到 X,将此提交称为 Z
将 Y(混合提交)重新设置为 Z(仅重命名)。 Rebase 足够聪明,可以看到 Y 中的重命名已经在 Z 中
在命令行上是这样的:
$ hg commit -m "mixed commit with both changes and renames"
$ hg update -r "p1(.)"
$ hg diff -c tip | grep "^\(diff\|rename\)" | hg import -m 'renames' -
$ hg rebase -s -2 -d .
【讨论】: