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

mbo*_*ork 1 mercurial

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

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

  1. 不要hg update在一个循环,并针对diff的后续版本文件(sloooow,但应该工作).

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

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

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

Laz*_*ger 6

hg archive是一个很好的方法,未来的工作,但我可以建议至少3种替代工作方式和1修复find-correct-version更新

未来的工作

  • 您可以使用的合着者和默认单独命名为分支合并的结果,发送合着者总是把头从他的分支,得到修正后更新自己的分支(你永远知道,你派)和合并分支为默认

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

  • Mercurial关键字在某种程度上被视为" 最后的特征 ",但在您的情况下,它是明显且可用的解决方案:只需在文件中添加带有hash-id的关键字(默认扩展而不是挂钩 - 更容易,更可靠)

当前状态

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

  • 我喜欢每个合作者的书签或分支的想法,比`archive`更好."bisect"的问题在于,您需要首先将搜索包含在一个"好"和一个"坏"变量集中,以便进行二分查找.在这种情况下,除了所寻求的每个*变更集都是"坏". (2认同)