mercurial:找出文件来自哪个修订版

时间:2012-10-29 13:37:00

标签: mercurial

鉴于一个来自某个版本的存储库的文件,并且可能已经被修改过,是否有一种很好的方法来识别它(最有可能)来自哪个版本?我希望,将它与所有文件的版本(或足够的版本)进行比较并选择具有最小差异的版本。

我的使用案例:多年来我编写并设置了各种仍在使用的乳胶样式。很多时候没有正式的“发布”和版本号,有时我忘了更新版本号。我现在经常收到关于这个或那个文件的问题。我正在使用mercurial来跟踪样式的历史(其中一些是追溯性的),并且在历史记录中快速找到脚本的位置会很方便,所以我可以判断我是否正在处理我已经修复过的问题。 / p>

我对如何将文件与回购历史记录进行匹配感兴趣。前瞻性解决方案很明确:始终使用版本号来避免问题。正如this answer相关问题所示,KeywordExtension可以自动化版本号。由于不建议使用它,我也欢迎建议采用“更好”的方法。

1 个答案:

答案 0 :(得分:0)

  1. 您不能使用除校验和以外的任何内容以及其历史版本
  2. Mercurial templater中没有任何与校验和相关的关键字
  3. 您可以使用[alias]部分向Mercurial添加新命令(甚至在别名定义中也允许使用shell命令)
  4. 以上得出的结论是至少有两种解决方案

    • 您可以为Mercurial编写扩展名,它可以为检查添加和实现template-keyword,计算外部文件的校验和,获取文件的所有修订版本的校验和(hg log FILENAME --template "{md5(FILENAME)}\n")并尝试查找匹配
    • 您为Mercurial添加别名以进行校验和,log FILENAME将为您提供文件的所有修订,md5 -r REV FILENAME再次生成基于md5的哈希:

    hg log FILENAME --template "{rev}\n" | xargs $(...)