使用Mercurial,有一种简单的方法可以使用默认远程存储库中的tip文件来区分我的工作副本

StackOverflow https://stackoverflow.com/questions/156280

当使用mercurial时,我希望能够使用我的默认远程存储库中的tip文件来区分文件的工作副本。有一个简单的方法吗?

我知道我可以做一个“hg incoming -p”看到即将发生的补丁变更集,但是直接看到特定文件的实际更改会很好,如果我做了最新的东西(或者我可能会推送的内容)出)。

我现在能想到的最简单的事情是创建一个小脚本来查看.hg / hgrc中的默认位置并使用curl下载文件(如果它是通过http,否则scp通过ssh,或者只是做一个直接差异,如果它在本地文件系统上),然后将工作副本或提示与该临时副本区分开来。

我正在努力向我的团队出售mercurial,我的一个团队成员今天提出了这个问题,他们可以使用他们的GUI工具在SVN中轻松完成。

有帮助吗?

解决方案

经过一番挖掘后,我遇到了 Rdiff扩展,其中包含大部分内容我想要它。

它没有mercurial,但它可以通过克隆存储库来安装:

hg clone http://hg.kublai.com/mercurial/extensions/rdiff 

然后修改〜/ .hgrc文件以加载扩展名:

[extensions] 
rdiff=~/path/to/rdiff/repo/rdiff.py

它有点古怪,因为它实际上修改了现有的“hg diff”。通过检测第一个参数是否是远程URL来命令。如果是,那么它将在您的本地仓库(而不是工作副本)中针对您的提示文件区分该文件。这是因为远程回购首先在参数中,它与我期望的相反,但你可以通过“ - 反向”。到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 <filename to diff against remote repo tip>

其他提示

你可以尝试在本地拥有两个存储库 - 一个用于传入的东西,一个用于传出。然后你应该可以用任何工具做差异。见这里:

http://weblogs.java.net/blog /kohsuke/archive/2007/11/using_mercurial.html

要扩展Lars方法(由于某种原因注释不起作用),您可以使用 diff 命令上的 -R 选项来引用本地存储库。这样您就可以使用在 hg

中指定的相同diff应用程序

使用模板,您可以获得所有已更改文件的列表:

hg incoming --template {files}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top