如何仅提交文件重命名,而不是Mercurial中的实际内容更改

时间:2012-08-15 09:57:39

标签: mercurial rename

我在repo中重命名了几个文件,并对其进行了一些更改。现在,我只想提交我重命名文件,然后单独提交更改的事实。 Mercurial有可能吗?

我看到的一个选项是搁置我的所有更改,然后手动记录所有重命名。我想知道是否有更自动化,更不容易出错的方式。

1 个答案:

答案 0 :(得分:3)

使用Mercurial没有内置的方法 - 提交将始终记录重命名和新文件内容。

但是,您可以通过几个步骤来完成。如果工作副本父级是X,则执行:

  1. 提交混合重命名和更改,调用此

  2. 解压缩重命名并将其提交到X,调用此提交Z

  3. 将Z(混合提交)重新引导到Z(仅重命名)。 Rebase非常聪明,可以看到Y中的重命名已经在Z

  4. 在命令行上,它看起来像这样:

    $ 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 .