Mercurial-变更集中所有更改的文件?


Answers:


149

如果您只想列出已更改的文件,则应使用“状态命令”。下面将列出对修订版REV中文件的更改

hg status --change REV

13
+1,但OP可能也希望-n/ --no-status标志。
Niall C.

7
为了方便复制:hg status --no-status --change REV
zastrowm

+1这比hg status --rev REV~1:REV我以前打字容易得多。
Patrick Oscity 2014年

3
用 '。' 对于当前的REV。含义-– hg status --change .
zaxy78

16

只需p从您的hg log -vpr将显示文件列表中删除即可。-p表示显示补丁。您也可以使用模板将输出格式化为您的喜好。


3
我想你会需要下面的模板:--template“文件:{文件} \ n”
吨Plomp

1
我相信{files}是-v标志默认模板的一部分
eskhool '16

2
hg log -r。--template'{join(files,“ \ n”)}'以换行符分隔文件
Foxichu

1
@Foxichu评论对我有用,但有点hack。实际上,较高的答案- hg status --change .效果更好,并给出了文件操作前缀(A \ M \ D等)和更好的相对路径
zaxy78

13

我知道这个问题是针对单个变更集的,但是如果您想对一系列变更集的所有文件进行修改,则可以

hg status --rev 1 --rev 10 -m

2
糟透了。在范围内修改的文件hg log -r BEGIN:END --template "{files}\n"就像两年前@ geoffrey-zheng和@ton所写!!!
zy懒2012年

对于那个很抱歉。假设他们的答案是针对单个变更集的。
尼克·德沃

1
我认为这个答案并不那么糟糕。hg status --rev BEGIN --rev END是:1.比起记忆要容易得多hg log -r BEGIN:END --template "{files}\n";2.它不使用sed(@Eric Lawler)或join()(@Foxichu)在单独的行中打印文件;3.没有-m标志,它不仅显示已修改的文件,还显示添加和删除的文件(此处也使用漂亮的标准颜色);4.有-a-r标志允许不同的过滤;5.如果不希望使用状态前缀,则-n可以使用选项来禁止显示。
米哈尔罗贝尔

9

当前提交的修订

hg status --change .

.是当前版本的缩写,就像@HEAD在Git中一样

当前未提交的修订

hg status

任意承诺修订

hg status --change REV_ID

1
最简单准确的答案!
zaxy78 '19

2

通过谷歌搜索发现了一个类似概念的问题。要显示通过一系列变更集更改的所有文件,操作非常简单:

hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n" | sed -e 's/ /\n/g' | sort -d | uniq
  1. hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n"将显示从[start rev]到[end rev]在每个变更集中更改或添加的每个文件的列表,每个变更集的文件都换行。交换{file_mods}{file_adds}{files}显示所有文件修改,增加或删除。
  2. sed -e 's/ /\n/g' 将拆分所有文件以在单独的行上显示
  3. sort 嗯,会为您排序列表,以便我们可以使用uniq过滤列表
  4. uniq 将过滤列表以删除重复项-在多个修订版本中更改的文件。

该解决方案将最后修改的文件与第一个添加的文件粘合在一起。另外,它不能正确处理文件名中的空格。甲--template没有这些缺点为基础的解决方案可以使用被构造join()由@Foxichu的建议。
米哈尔罗贝尔

1

我知道这个问题是个老问题,我很惊讶没有人提供经过修改的代码形式OP。我只是通过运行来获得已修改/添加/删除文件的列表(未标记为哪个)hg log -v。或者,我实际上需要hg log -v -l5查看最近5次提交中已被修改/添加/删除的文件(包括那些我尚未推送到存储库的文件)。


“没有人刚才提出的修改后的代码形式OP” - @Geoffrey郑确实做到了〜1H的问题被张贴后
米哈尔罗贝尔

-2

如果您像大多数商店一样,可以使用票务系统来跟踪更改。如果您知道票证编号并想要查找与该票证关联的所有提交(假设您在提交消息中包括了票证编号),则可以使用:

hg log -k TICKET_NUMBER

这确实显示了与故障单关联的所有修订。但是,它不会列出文件。您可以使用上面的答案之一来获取与修订相关的文件列表。

为了简化起见,结合先前答案中的信息,您可以执行以下操作来搜索提交,包括更改的文件:

hg log -vk TICKET_NUMBER

这与问题有关。张贴者询问如何在变更集中获取文件。变更集通常与票证相关。我的解决方案显示了如何获取与票证关联的变更集相关的文件。
iDimensionz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.