当使用mercurial时,我希望能够使用我的默认远程存储库中的tip文件来区分文件的工作副本.是否有捷径可寻?
我知道我可以做一个"hg incoming -p"来看看即将发生的补丁变更集,但是如果我直接看到特定文件的实际更改,我会很高兴.最新的东西(或者我可能会推出的东西).
我现在能想到的最简单的事情就是创建一个小脚本来查看.hg/hgrc中的默认位置并使用curl下载文件(如果它是通过http,否则scp通过ssh,或者只是做一个直接diff,如果它在本地文件系统上)然后将工作副本或提示与该临时副本区分开来.
我正在努力向我的团队出售mercurial,我的一个团队成员今天提出了这个问题,他们可以使用他们的GUI工具在SVN中轻松完成.
经过一番挖掘后,我遇到了Rdiff扩展,它完成了我想要的大部分工作.
它没有mercurial,但它可以通过克隆存储库来安装:
hg clone http://hg.kublai.com/mercurial/extensions/rdiff
然后修改〜/ .hgrc文件以加载扩展名:
[extensions] rdiff=~/path/to/rdiff/repo/rdiff.py
它有点古怪,它实际上通过检测第一个参数是否是远程URL来修改现有的"hg diff"命令.如果是,那么它将在您的本地仓库(而不是工作副本)中针对您的提示文件区分该文件.这是因为远程repo在参数中是第一个,它与我期望的相反,但你可以将"--reverse"传递给hg diff命令来切换它.
我可以看到这些是扩展的潜在增强,但是现在,我可以在我的starup文件中使用bash/zsh shell函数解决它们.它对我的工作副本进行了临时检查(由mercurial事务保存,因此可以回滚),执行反向差异,然后回滚事务以返回原来的状态:
hgrdiff() { hg commit -m "temp commit for remote diff" && hg diff --reverse http://my_hardcoded_repo $* && hg rollback # revert the temporary commit }
然后调用它:
hgrdiff