如何获取在两个任意变更集之间修改的文件列表?
我的唯一猜测是这样的可怕:
# 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
也许有一个我没注意到的善变命令?
<小时/> 不单个变更集的已修改文件。
答案 0 :(得分:32)
hg diff -r 182 -r 193 --stat
或
hg status --rev 182:193
答案 1 :(得分:8)
当您想要了解文件状态时,要查找的基本命令是hg status
。 status命令是文件名导向命令,您想知道一些文件名。
当您将其作为
运行时$ hg status
然后它将工作副本状态与工作副本父修订(.
)进行比较。但是如果你把它作为
$ hg status --rev AA:BB
然后它会显示在AA
和BB
之间修改的文件!无需打褶,切割,分类或模板。
答案 2 :(得分:0)
解决方案一。 DIFF-基于强>
>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(-)
你可以通过点击“|”来获取更改的文件char,或(从我的POV更好更好的方法)管道输出到gawk,对于记录正好4个字段,打印$ 1
解决方案二。记录+模板+修改
>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
转换为列表,删除(可能)重复项,我将为您留下
答案 3 :(得分:0)
您可以在Tortoise Workbench中执行类似于hg stat
的操作。
最简单/最内置的方法是:
这将产生一个类似于以下示例的窗口:
(然后单击[X])。
此屏幕可能用途有限,例如,除了拍摄屏幕截图之外,您无法随时将其导出。但是,您可以一对一地复制/粘贴单个行的文本。
产生有用文本输出的另一种方式是通过添加自定义工具来自动使用THG Workbench中的hg stat
。
现在,当您运行该工具时,将在日志窗格中自动获取结果。您可以选择一个或多个变更集,它将进行相应的比较。
注意-或者,您可以通过添加以下内容在设置文件中进行配置:
[tortoisehg-tools]
filecomp.command = hg stat --rev {REVID}
filecomp.enable = istrue
filecomp.label = FILECOMP
filecomp.showoutput = True
如果您在列表中选择了一个变更集,则宏{REVID}
将扩展为33a6bd983eab
之类的文本,如果您选择了两个变更集,则该宏将扩展为33a6bd983eab+a41898ae15c4
的文本,等等。
在这种方法中,您实际上可以选择> 2个变更集,它将报告它们之间的组合差异。
还要注意,stat
有另一种语法,可以列出任何两个变更集之间存在哪些文件差异,而我认为在其他答案中没有提到这些差异:
hg stat --rev A --rev B
其中A
和B
是变更集ID(看起来像1c845eefe22e
)。
(您也可以使用修订号,例如12345来代替变更集ID,但请注意,与ID不同,它们不是永久值)。
A
和B
可以在任何两个分支上,也可以在同一分支上,只要两个都存在于您正在使用的本地克隆中就没关系。