0

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

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

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

4

1 回答 1

0
  1. 除了有问题的文件的校验和之外,您不能使用任何东西,它是历史修订
  2. Mercurial 模板中没有任何与校验和相关的关键字
  3. 您可以使用 [alias] 部分向 Mercurial 添加新命令(甚至在别名定义中也允许使用 shell 命令)

以上得出的结论是至少有两种解决方案

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

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

于 2012-12-02T08:31:31.760 回答