给定一个文件,如何找出mercurial存储库中的哪个版本?

时间:2012-09-18 20:08:51

标签: mercurial

假设hg版本控制下有一个文件。我有该文件的特定版本,我想知道此版本中该文件的版本。

我怀疑有两种可能的方法可以做到这一点。

  1. 在循环中执行hg update并将文件与后续版本区分开(sloooow,但应该可以正常工作)。

  2. Make Mercurial在提交之前将转号放在文件的第二行中,例如注释中。根据我的阅读,可能会使用precommit钩子。然后我不必比较任何东西,只看文件本身(我假设没有人会改变这一点,当然,但在我的情况下这是相当安全的假设)。

  3. 我的用例是一篇用LaTeX编写的联合论文,有两位共同作者根本不知道版本控制,但我更喜欢使用它(出于显而易见的原因)。我们通过电子邮件进行沟通,并且实际上有一个基于人的锁系统(“在你发给我下一个版本之前,我不会对这个文件起作用,好吗?”)。出现的唯一问题是我正在向作者B发送版本X进行校对,然后作者C向我发送了更正的版本Y并将其提交到我的仓库中,然后作者B发送他的更正Z (对于版本X)我开始迷路 - 但我可以检查发送给B的电子邮件中的附件,我只需要找出它的修订版。

    所以,我的问题是:上面两个想法中的哪一个会更好,或者还有另外一个可以帮我处理这个烂摊子?

2 个答案:

答案 0 :(得分:6)

hg archive未来工作的好方法,但我可以建议至少3种替代工作方式和1种针对更新的查找更正版本的修复

未来的工作

  • 您可以为共同作者使用单独的命名分支,并为合并结果使用默认值,发送共同作者总是从他的分支开始,在得到更正后更新他的分支(您将始终知道,那< / strong>您已发送)并将分支合并为默认

  • 一个分支,标有书签的同事修订版,您稍后会转到下一个点

  • Mercurial keywords以某种方式被视为“feature of last resort”,但在您的情况下,它是明显且可用的解决方案:只需在文件中添加带有hash-id的关键字(默认扩展而非挂钩 - 更容易

当前状态

要查找带有文件源的变更集,您可以尝试使用bisectexample)并在test-script,fe,CRC文件中进行测试(您需要无版本文件的CRC,检查跨历史的版本化文件)

答案 1 :(得分:1)

如果您很乐意依赖查找发送给审阅者的电子邮件,为什么不在其中包含修订哈希值以及文件?

您可以通过使用hg archive生成附件来获得此额外工作,这将创建一个文件,其中包含1)您要检查的文件,以及2).hg_archival.txt,包含修订哈希。

虽然如果没有更优雅的方式我会感到惊讶,即使你的合作者对使用版本控制没有用处。