在更改中获取所有已更改的文件

时间:2015-08-21 20:11:18

标签: regex mercurial

我想在变更集中获取所有已更改的文件,但没有指定更改类型的字母。

我知道这个命令

hg status --change changeset

然而,这个返回结果如,

A /path/to/file
M /path/to/file

我希望结果是

/path/to/file

没有" A"或" M"。我尝试用正则表达式来做它以前工作但我不知道它在一个场景中没有工作。

正则表达式

/(?<=[MA]\s).+/

这种情况不起作用

arwa/Documents/Projects/firefox/M db << notice M here. 

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

您应该在正则表达式中添加^(行首):

/(?<=^[MA]\s).+/

如果你不这样做,(?<=[MA]\s)会看到M部分后面,而.+会抓住db

答案 1 :(得分:1)

从Mercurial 3.5开始,您可以使用模板(仍然是实验性功能,您可以使用hg help status -v查看)。即:

hg status --change <rev> --template '{path}\n'

答案 2 :(得分:1)

为什么不使用带模板的日志?

hg log -r CSET -T "{files % '{file}\n'}"

将产生干净的输出

lang/UTF-8/serendipity_lang_ru.inc.php
plugins/serendipity_event_bbcode/UTF-8/lang_ru.inc.php
plugins/serendipity_event_emoticate/UTF-8/lang_ru.inc.php
plugins/serendipity_event_karma/UTF-8/lang_ru.inc.php
plugins/serendipity_event_s9ymarkup/UTF-8/lang_ru.inc.php
plugins/serendipity_plugin_shoutbox/UTF-8/lang_ru.inc.php

与模板状态相反

'lang\UTF-8\serendipity_lang_ru.inc.php
''plugins\serendipity_event_bbcode\UTF-8\lang_ru.inc.php
''plugins\serendipity_event_emoticate\UTF-8\lang_ru.inc.php
''plugins\serendipity_event_karma\UTF-8\lang_ru.inc.php
''plugins\serendipity_event_s9ymarkup\UTF-8\lang_ru.inc.php
''plugins\serendipity_plugin_shoutbox\UTF-8\lang_ru.inc.php
'