Mercurial:如何移动项目/模块,但保留修订历史记录

时间:2011-11-29 19:08:10

标签: java mercurial move revision-history

考虑以下多模块项目(在单个存储库中):

Module A (i.e. parent)
  - Module 1 (various core stuff)
    - Module i
  - Module 2 (non-core, depends on 1)
    - Module ii
    - Module iii

(这样设置的原因是它使一些开发人员能够处理单个模块(例如2及其子代),而其他开发人员可以处理整个代码库(例如{{1和它的孩子们。)

然后我们假设A已被重新归类为Module ii,需要移至core

我可以通过将Module 1Module ii移到Module 2来解决这个问题。但是,mercurial会将此视为删除(来自Module 1)并添加(位于2),因此我们会在移动前从1丢失修订历史记录。 (我知道我们实际上不会“丢失”这个,因为它仍然可以在mercurial中使用;但是,它不会随时可以通过新位置的文件访问。)

如何移动文件并使用这些文件移动修订历史记录?

3 个答案:

答案 0 :(得分:3)

可以使用hg mv将这些添加/删除对转换为“重命名”,只要它们保留在同一个存储库中即可。

答案 1 :(得分:1)

信息在那里,不会丢失。您只需要使用 -f, - 跟随标志来获取hg日志。 (这是@freixo在帖子Why 'hg mv' (mercurial) doesn't move a file's history by default?中指出的内容)

答案 2 :(得分:0)

为什么不改变你的〜/ .hgrc(或Mercurial.ini)做xanatos在这里说的话:Why 'hg mv' (mercurial) doesn't move a file's history by default?