0

我有很多“契合”的项目。他们共享源文件。

在此处输入图像描述

每个项目(包括数十个测试)都有自己的 Mercurial 存储库。

我想将所有这些存储库加入主存储库并保留相同的目录结构。

mkdir MasterProject
cd MasterProject
mkdir "Common_sources"
hg init
hg pull ../Common_sources Common_sources 

最后一条语句显然不是那样工作的,但这正是我想要的行为。也就是说,复制所有文件及其历史记录并将它们放入Common_sources目录中。

如何在 Mercurial 中实现这一点?

4

1 回答 1

2

您需要使用转换扩展来执行此操作。

您需要做的是使用文件映射转换源存储库,以将存储库中的所有文件移动到子文件夹中。要对Common_sources文件夹执行此操作,您将使用以下命令:

hg convert --filemap filemap.txt Common_sources Common_sources.tmp

filemap.txt文件将包含以下文本行:

rename . Common_sources

转换后,您有一个名为Common_sources.tmp的存储库,其历史记录与Common_sources相同,但所有文件都位于子目录中。

您将对要合并的所有存储库执行类似的任务,然后将它们合并到一个项目中,如下所示:

mkdir MasterProject
hg init
hg pull ../Common_sources.tmp
hg pull ../Integration_tests -f
hg merge
hg commit -m "Merging integration tests"

为要添加到存储库项目中的每个项目重复拉取、合并和提交。

完成后,您可以完成hg update查看主存储库中的所有新文件夹。

于 2013-06-18T17:23:48.083 回答