【问题标题】:Showing renames in hg status?在 hg 状态中显示重命名?
【发布时间】:2011-02-10 09:23:17
【问题描述】:

我知道 Mercurial 可以跟踪文件的重命名,但是当我执行 hg status 时,如何让它显示重命名而不是添加/删除?例如,而不是:

A bin/extract-csv-column.pl
A bin/find-mirna-binding.pl
A bin/xls2csv-separate-sheets.pl
A lib/Text/CSV/Euclid.pm
R src/extract-csv-column.pl
R src/find-mirna-binding.pl
R src/modules/Text/CSV/Euclid.pm
R src/xls2csv-separate-sheets.pl

我想知道四个文件已被移动。

我想我在某处读到这样的输出是为了保持与某事或其他事的向后兼容性,但我并不担心。

【问题讨论】:

  • 你的意思是“hg status”吗?我认为 hg log 不会以您列出的格式生成输出。
  • 实际上,我正在使用以下内容使 hg 日志显示额外的内容(和颜色):bitbucket.org/sjl/mercurial-cli-templates/src 所以让我们将问题更改为hg status

标签: mercurial dvcs rename


【解决方案1】:

有几种方法可以做到这一点。

在提交之前,您可以使用hg diff --git 来显示重命名的内容:

$ hg diff --git
diff --git a/theTest.txt b/aTest.txt
rename from theTest.txt
rename to aTest.txt

请注意,这仅在您使用 hg mvhg renamemvhg addremove --similarity 100 时有效。

提交后,您仍然可以使用hg diff,但您必须使用-r 指定更改:

$ hg diff -r 0 -r 1 --git
diff --git a/test.txt b/theTest.txt
rename from test.txt
rename to theTest.txt

对于hg statushg log,使用-C 命令行标志来查看从中复制文件的源。

$ hg status -C
A aTest.txt
  theTest.txt
R theTest.txt

aTest.txt 正下方的行表示它从 (theTest.txt) 复制的源。

$ hg log -v -C
changeset:   1:4d7b42489d9f
tag:         tip
user:        jhurne
date:        Tue Apr 20 20:57:07 2010 -0400
files:       test.txt theTest.txt
copies:      theTest.txt (test.txt)
description:
Renamed test.txt

您可以看到受影响的文件(test.txt 和 theTest.txt),并且“theTest.txt”是从 test.txt 复制的。

【讨论】:

    【解决方案2】:

    您可以通过 hg summary 了解有多少文件被重命名。如果您想查看已重命名的实际文件,我发现的最快方法是:

    hg st -a -C
    

    这将输出如下内容:

    A <path\to\renamed\file>
      <path\copied\from>
    A <path\to\added\file>
    A <path\to\renamed\file>
      <path\copied\from>
    

    由于 hg status 将重命名视为复制和删除,因此重命名的文件将列出从文件复制的内容。添加但未重命名的文件不会列出从文件复制的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-10
      • 2016-10-13
      • 1970-01-01
      • 2022-11-04
      • 1970-01-01
      • 2017-01-18
      • 2010-12-24
      • 2016-12-27
      相关资源
      最近更新 更多