【发布时间】:2012-01-09 02:52:08
【问题描述】:
考虑以下多模块项目(在单个存储库中):
Module A (i.e. parent)
- Module 1 (various core stuff)
- Module i
- Module 2 (non-core, depends on 1)
- Module ii
- Module iii
(这样设置的原因是它使一些开发人员可以只处理单个模块(例如2 及其子模块),而其他开发人员可以处理整个代码库(例如A 及其孩子们)。
然后让我们假设Module ii 已被重新分类为core,并且需要移动到Module 1。
我可以通过将Module ii 从Module 2 移动到Module 1 来处理这个问题。但是,mercurial 将此视为删除(来自2)和添加(来自1),因此我们将在移动之前丢失来自ii 的修订历史记录。 (我知道我们实际上不会“丢失”它,因为它仍然可以在 mercurial 中使用;但是,在新位置的文件中不容易访问它)。
如何移动文件并让 mercurial 使用这些文件移动修订历史记录?
【问题讨论】:
-
这不是很清楚。这些模块是单独的回购吗?您是在问如何在保留历史记录的同时合并存储库?
-
@PaulS - 我不明白你的问题来自哪里;他们似乎暗示了问题中没有暗示的复杂程度。为了进行多余的澄清,我已经编辑了问题以确认这一切都在一个存储库中......
-
@amaidment 在 mercurial 中,在不同的存储库中有不同的系统“模块”是很常见的。我在想这种情况一定有什么特别之处才能保证这个问题。如果这一切都在一个回购中,那么答案是
hg mv,hg help会告诉你的。 -
Mercurial 确实将移动视为复制 + 删除,保留所有历史记录,这是相当微不足道的(不显示研究工作,因此为 -1)。和 SVN 一样,需要使用
hg mv进行复制(或事后标记),否则它不知道文件已移动。
标签: java mercurial move revision-history