mercurial(或TortoiseHg)有办法执行以下操作吗?
我认为我可以查看外发更改集,然后以某种方式手动浏览每个更改集,但必须有一种方法可以通过命令行在单个命令中执行此操作。
更新
我想要的另一个要求是显示文件的更改方式。如果您进入TortoiseHg并单击按钮(在同步工具栏中),并使用工具提示过滤传出变更集到远程存储库,您将获得变更集草稿的列表。单击每个变更集会列出传出文件,并且有一个 + 表示添加, x 表示删除,并且没有任何符号表示修改。我希望能够通过命令行获取此信息。
相关版本信息:
TortoiseHg 2.4.1
(使用以下支持软件)
Mercurial 2.2.2
Python 2.6.6
Qt 4.7.4
我还应该提到我在Windows(7x64)上以防止使用* nix命令行实用程序来管道命令的答案。我总是可以得到unxutils或cygwin等,但此时我宁愿不这样做(除非没有其他选择)。
答案 0 :(得分:4)
我找到了一种方法, 除了我在问题中添加的另一项要求 (请参阅相关编辑)。
基于this stackoverflow答案,我可以列出所有在传出的变更集中已更改的文件(另一种说法是他们处于草稿阶段):
changeset =“{files}”
file =“{file} \ n”
hg -q outgoing --style C:\ temp \ out-style.txt | sort -u
我正在使用powershell执行此操作,因此我执行了以下操作(基于我的调查结果here)将输出通过管道传输到名为 c:\ temp \ outgoing-changes.txt <的文件中/ em>(在粗体中添加):
hg -q outgoing --style C:\ temp \ out-style.txt | sort -u | Out-File C:\ Temp \ outgoing-changes.txt -encoding UTF8
所以现在缺少的是 每个文件的更改(添加,删除,修改)。这是我想知道的信息。
答案 1 :(得分:1)
两种略有不同的解决方案
我太懒了,不能在输出中使用过多的换行符,sort -u
无论如何都会杀掉它,所以
更改了样式文件(在关键字之前添加了状态和\ n,因为{file_ *}关键字输出以空格分隔的列表,与{file}相反)
changeset = '{file_mods}\n{file_dels}\n{file_adds}'
file_mod = '\nM {file_mod}'
file_add = '\nA {file_add}'
file_del = '\nD {file_del}'
使用过的hg log -r“outgoing(PATH)”(可能会有所改进,可能会以某种方式放在[revsetalias]中)
示例输出
M 404.php
M functions.php
M readme.txt
M screenshot.png
M style.css
M readme.txt
M sidebar.php
M style.css
M comments.php
M functions.php
M header.php
M readme.txt
M sidebar.php
M style.css
M footer.php
M functions.php
M header.php
M search.php
M style.css
A readme.txt
M functions.php
M functions.php
A 404.php
A archive.php
A archives.php
A comments.php
A footer.php
A functions.php
A header.php
A html5.js
A image.php
A index.php
A license.txt
A links.php
A page.php
A screenshot.png
A search.php
A sidebar.php
A single.php
A style.css
如果是单一范围的传出(推送仅影响一个分支),则可以定义传出的第一个和最后一个变更集(Windows的手工):
hg log -r "(min(outgoing()))"
(以下简称A)
hg log -r "(max(outgoing()))"
(以下称B,可能总是提示)
hg status
将显示所有更改及其各自的状态
hg st --rev A --rev B
对于来自解决方案1和相同范围的相同repo
hg st --rev 1 --rev 7
M 404.php
M comments.php
M footer.php
M functions.php
M header.php
M screenshot.png
M search.php
M sidebar.php
M style.css
A readme.txt
如果工作目录parent是传出范围内的最新变更集(提示和WD-parent是提示是偶然的情况),可以跳过st
中的secong修订版(默认情况下hg status
将与工作目录进行比较)状态变为hg status --rev A