2012-03-26 112 views
13

如何获取两个任意更改集之间修改的文件列表?Mercurial:列出“hg diff”文件

我唯一的猜测是可怕的事情是这样的:

# files where something has been added 
hg diff -r AA -r BB|grep -- +++|cut -f1|cut -d/ -f2- >/tmp/ka 

# files where something has been removed 
hg diff -r AA -r BB|grep -- ---|cut -f1|cut -d/ -f2- >>/tmp/ka 

# filtering out "dev/null": it appears when a file is added or removed from the repository 
sort -u /tmp/ka |grep -v dev/null 

也许有一个善变的命令,我没有注意到?


不是单个变更集的修改后的文件。
编辑:我需要这样做,因为我从青铜时代有些程序员谁不明白一个.diff作什么工作的,请多多包涵......

+0

请填写在意大利。因为“从两个任意变更集中修改”是不可预测的噪音和曲解。两者之间还是只有这两个? – 2012-03-26 15:22:40

+1

很确定他试图检查在回购集变更集中发生的情况,类似于检查单个文件变更的差异历史记录。 – 2012-03-26 15:34:53

+0

在变更集AA和变更集BB之间修改的文件。比如“hg diff -r AA -r BB”,但只是文件名,而不是完整的diff,即我在该命令行中提出的建议。 – 2012-03-26 15:36:30

回答

30

hg diff -r 182 -r 193 --stat

hg status --rev 182:193

+0

哦,谢谢,就是这样! – 2012-03-26 15:56:55

+0

'--rev'和'-r'在我的系统上表现得一样......是2012年的一个bug吗? – mpen 2015-07-13 19:14:17

+0

好像现在已经修好了,是的。 – 2015-07-14 11:03:34

0

解决方案之一。基于差异的

>hg diff -r 3 -r 4 --stat 
comments.php | 14 +++----------- 
functions.php | 15 +++++++++++++-- 
header.php | 2 +- 
readme.txt | 17 ++++++++++++++--- 
sidebar.php | 43 ++++--------------------------------------- 
style.css  | 18 ++++++++++++------ 
6 files changed, 47 insertions(+), 62 deletions(-) 

您可以通过对“|”焦炭,或管道输出到呆子,这对于记录恰好有4个领域,打印$ 1

解决方案二(从我的POV更好,更好的方法)。登录+模板+ revsets

>hg log -r "3::4" --template "{file_mods}\n" 
footer.php functions.php header.php search.php style.css 
comments.php functions.php header.php readme.txt sidebar.php style.css 

转换列出,删除(可能)重复我将离开你

8

的基本命令查找,当你想知道的东西有关文件状态hg status。状态命令是文件名称面向命令,并且您想知道一些文件名。

当你运行它作为

$ hg status 

然后将其与工作拷贝父版本(.)的工作拷贝状态进行比较。但是,如果你运行它

$ hg status --rev AA:BB 

然后它会显示AABB之间修改的文件!不需要格式化,切割,排序或模板。

(我以前herehere,并here解释这一点,请参见更多的技巧这些问题和答案。)

+0

无法与-r一起工作,因为“-r --removed只显示已删除的文件” - 这是一个严重的UI失败。 – 2012-03-28 00:03:56

+0

@asaddude:ups!对不起,我已经修复它使用'--rev'代替。 – 2012-03-28 08:30:27

相关问题