生成包含在修订之间更改的文件的目录列表
Generating a list of directories containing files changed between revisions
我从this answer知道我能做到
hg status --rev x:y
列出在修订 x
和 y
之间更改的文件。有没有办法不获取单个文件,而只获取它们所在的目录?
例如,如果上面的命令会产生
A Foo\Bar\SomeFile.txt
A Foo\Bar\AnotherFile.cs
M Baz\AnotherFile.txt
我想得到
Foo\Bar
Baz
相反。
不是现成的解决方案(见尾注),只是提示
- 您可以使用模板更改
hg st
的输出格式,就像对任何 "log-like" hg 命令所做的一样(参见 -T
选项)
- 在模板中,您可以使用过滤器 "dirname" 过滤输出(文件名),这将去除文件的文件名部分
但我尝试了一下并发现(在我的回购协议中)一些 "oddities"(和 预期的 麻烦)
尾注:
- 虽然
hg st
的默认输出会消除结果中的重复文件名(如果出现),但您的模板不会(同样,"by default")
- 我看到相同状态范围的模板化输出结果错误(完全错误)
好
>hg st --rev 1170:tip
M hggit\__init__.py
M hggit\compat.py
M hggit\git_handler.py
M hggit\gitdirstate.py
M hggit\hg2git.py
M tests\test-illegal-contents.t
我的
>hg st --rev 1170:tip --template "{files % '{file}\n'}"
hggit/__init__.py
hggit/__init__.py
hggit/__init__.py
hggit/__init__.py
hggit/__init__.py
hggit/__init__.py
(文件的六倍 仅来自提示 而不是范围)
- 即使使用
hg log -T
而不是 st(它给出 所有文件),你也会遇到第 1 页的问题:"more than one file-entry in output for the same file"
我从this answer知道我能做到
hg status --rev x:y
列出在修订 x
和 y
之间更改的文件。有没有办法不获取单个文件,而只获取它们所在的目录?
例如,如果上面的命令会产生
A Foo\Bar\SomeFile.txt
A Foo\Bar\AnotherFile.cs
M Baz\AnotherFile.txt
我想得到
Foo\Bar
Baz
相反。
不是现成的解决方案(见尾注),只是提示
- 您可以使用模板更改
hg st
的输出格式,就像对任何 "log-like" hg 命令所做的一样(参见-T
选项) - 在模板中,您可以使用过滤器 "dirname" 过滤输出(文件名),这将去除文件的文件名部分
但我尝试了一下并发现(在我的回购协议中)一些 "oddities"(和 预期的 麻烦)
尾注:
- 虽然
hg st
的默认输出会消除结果中的重复文件名(如果出现),但您的模板不会(同样,"by default") - 我看到相同状态范围的模板化输出结果错误(完全错误)
好
>hg st --rev 1170:tip
M hggit\__init__.py
M hggit\compat.py
M hggit\git_handler.py
M hggit\gitdirstate.py
M hggit\hg2git.py
M tests\test-illegal-contents.t
我的
>hg st --rev 1170:tip --template "{files % '{file}\n'}"
hggit/__init__.py
hggit/__init__.py
hggit/__init__.py
hggit/__init__.py
hggit/__init__.py
hggit/__init__.py
(文件的六倍 仅来自提示 而不是范围)
- 即使使用
hg log -T
而不是 st(它给出 所有文件),你也会遇到第 1 页的问题:"more than one file-entry in output for the same file"