我一直试图解决是否有办法获得与传入的hg状态相同的信息.(这是使用hg版本1.9.2)
因此,如果你拉回购,你可以获得所有变化的摘要:
hg pull hg status --rev .:default
然而,在拉入之前,最好的可用是:
hg incoming --stat
这对于显示已更改的文件很好.但是没有给出所有变更集的总体摘要.
现在我可以使用一些bash来总结所有文件:
hg in --rev default --template '< {desc|tabindent}\n' -q | sed 's%\t%< %' filechanges=`hg in --rev default --template '{files} ' -q` echo ${filechanges} | xargs -n1 | sort -u | sed -e 's%^%. %'
现在我可以使用我基于默认〜/ hgtemplates/map-cmdline.files创建的样式来显示"添加,删除,修改":
# specify a changeset changeset_verbose = 'changeset: {node} {rev} {branch}\ndescription:\n{desc|tabindent}\nFiles:\n{file_mods}{file_adds}{file_dels}{file_copies_switch}\n' changeset = 'desc: {desc|tabindent}\nFiles:\n{file_mods}{file_adds}{file_dels}{file_copies_switch}\n' changeset_quiet = '{file_mods}{file_adds}{file_dels}{file_copies_switch}\n' # Using hg status prefixes # Modified M prefix start_file_mods = '' file_mod = 'M {file_mod}\n' end_file_mods = '' # Added A prefix start_file_adds = '' file_add = 'A {file_add}\n' end_file_adds = '' # Deleted ! prefix start_file_dels = '' file_del = '! {file_del}\n' end_file_dels = '' # Copies C prefix ?????? start_file_copies = 'copies: ' file_copy = 'C {name} ({source})\n' end_file_copies = ''
然后使用它:
hg in --style ~/hgtemplates/map-cmdline.files -q
但是我必须使用更复杂的合并脚本,可能是基于名称的perl哈希.
那么有扩展或模板的方法吗?
任何正确方向的指针?
首先,您需要了解hg incoming
通过线路发送相同的数据hg pull
.这在许多情况下都很浪费(你只想查看日志),但是当你需要额外的信息时这很好.
因此,您可以利用--bundle
将拉取数据存储在临时位置的选项,然后将该捆绑包用作只读叠加存储库.
以下应该能够满足您的需求:
hg incoming --bundle .hg/changes.hg hg status -R .hg/changes.hg --rev 'bundle()'
此外,当然还有您可能想要执行的任何其他只读存储库操作hg -R .hg/changes.hg
.revset bundle()
将包含所有传入的修订.请注意,虽然我在--rev
这里跟随你使用,但我想你可能真的想要这个--change
选项.
并且,一旦满意,您不必再次通过网络进行更改,但可以直接从捆绑中获取它们:
hg pull .hg/changes.hg
请注意,您可以将捆绑文件放在任何您想要的位置,但不一定如此.hg/changes.hg
.