mercurial:确定文件来自哪个版本

mercurial:确定文件来自哪个版本,mercurial,Mercurial,给定一个来自某个存储库版本的文件,并且该文件可能已经被修改,是否有一种好的方法来识别它(最有可能)来自的版本?我希望,将其与所有文件版本(或足够多的版本)进行比较,并选择差异最小的版本 我的使用案例:多年来,我编写并发布了各种仍在使用的乳胶风格。很多时候没有官方的“发布”和版本号,有时我忘记了更新版本号。我现在经常收到关于这个或那个文件的问题。我正在使用mercurial跟踪样式的历史(其中一些是追溯性的),快速找到脚本在历史中的位置会很方便,这样我就可以判断我是否正在处理我已经修复的问题 我对

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

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

我对如何将文件与回购历史进行匹配感兴趣。前瞻性的解决方案是明确的:总是使用版本号来避免问题。至于一个相关的问题,关键字扩展可以自动生成版本号。由于不建议使用它,我也欢迎关于“更好”方法的建议

  • 除了校验和之外,您不能对有问题的文件及其历史修订使用任何东西
  • 您在Mercurial templater中没有任何与校验和相关的关键字
  • 您可以使用[alias]部分向Mercurial添加新命令(甚至alias定义中也允许使用shell命令)
  • 以上得出的结论是,至少有两种解决方案

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

    hg log FILENAME——模板“{rev}\n”| xargs$(…)

    >,因为它的使用并不是仅由某些意见“不推荐”推荐的,而是由其意见而非要求的;但我尊重mercurial开发人员的智慧,所以我愿意听取其他选择。谢谢,这对于固定过去版本的未修改副本是有意义的。对修改过的副本有什么想法吗?也许我不清楚,但这就是我试图描述的情景。例如,有人给我发了mods,但我不知道发什么。。。