svn - 使用 Mercurial,是否有一种简单的方法可以将我的工作副本与默认远程存储库中的提示文件进行比较

标签 svn http mercurial diff scp

使用 mercurial 时,我希望能够在我的默认远程存储库中区分文件的工作副本和提示文件。有没有简单的方法可以做到这一点?

我知道我可以执行“hg incoming -p”来查看传入的更改补丁集,但直接查看特定文件的实际更改会更好,如果我这样做的话一些最新的东西(或者我可能要推出的东西)。

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

我正在尝试向我的团队推销 Mercurial,我的一位团队成员今天提出了这一点,认为他们可以使用 GUI 工具在 SVN 中轻松完成。

最佳答案

经过一番挖掘,我发现了 Rdiff extension这完成了我想要的大部分工作。

它没有附带 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 命令来切换它。

我可以看到这些是对扩展的潜在增强,但现在,我可以在我的启动文件中使用 bash/zsh shell 函数来解决它们。它对我的工作副本进行临时 checkin (由 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>

关于svn - 使用 Mercurial,是否有一种简单的方法可以将我的工作副本与默认远程存储库中的提示文件进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/156280/

相关文章:

SVN-自动将中继合并到分支

http - 在 Go http 处理程序中处理 Write 调用错误的最佳方法

http - 开发网络服务器有哪些不同的方法?

spring - 使用 spring rest 模板执行 get 请求并检查返回的状态码是否正常

security - 我可以禁用 Mercurial 通过 HTTP 进行克隆/拉取吗?

mercurial - 显示指定 repo 的 hg 状态

java - 与eclipse连接时出现SVN错误

svn - 使用相对路径在命令行上创建 SVN Diff

java - 乌龟 SVN - 从 SVN 存储库获取项目并从本地 checkin

git - 将 HG 项目从 Bitbucket 镜像到 Github