【问题标题】:How to commit only file renames, not actual content changes in Mercurial如何仅提交文件重命名,而不是 Mercurial 中的实际内容更改
【发布时间】:2012-08-15 09:57:38
【问题描述】:

我在 repo 中重命名了几个文件,并对它们进行了一些更改。现在,我只想提交我重命名文件的事实,然后分别提交更改。这在 Mercurial 中可行吗?

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

【问题讨论】:

    标签: mercurial rename


    【解决方案1】:

    Mercurial 没有内置的方法来执行此操作 - 提交将始终记录重命名和新文件内容。

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

    1. 提交混合的重命名和更改,称之为 Y

    2. 提取重命名并将其提交到 X,将此提交称为 Z

    3. 将 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 .
    

    【讨论】:

    • 这成功了。第一条提交消息看起来很奇怪,因为提交将只包含更改 :) 谢谢!
    • 是的,你可能应该使用比我上面建议的更好的提交消息:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 2011-04-08
    • 2016-05-09
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多