我有一个包含多个项目的存储库,如何使用现有历史记录将每个项目存储在存储库中?

时间:2012-08-08 14:40:13

标签: mercurial

大约一年前,当我开始使用Mercurial时,我创建了一个名为SandBox的存储库,将所有项目都放入其中,现在大约一年后,我意识到这不是一个非常聪明的选择我有19个项目,其中一些是大。我想给每个项目提供自己的存储库,同时保留历史记录。我有一个简单的方法来实现这个目标吗?

2 个答案:

答案 0 :(得分:3)

好吧,考虑一个具有以下结构的项目(in bitbucket):

$ find hgmultiproject
hgmultiproject
hgmultiproject/proj2
hgmultiproject/proj2/mysndfile
hgmultiproject/proj1
hgmultiproject/proj1/myfirstfile
hgmultiproject/proj3
hgmultiproject/proj3/mythirdfile

这个项目有这个日志:

revision:    7:6bbc26c1a34d
tag:         tip
user:        Adam Victor Nazareth Brandizzi <brandizzi@gmail.com>
date:        Wed Aug 08 11:49:22 2012 -0300
summary:     correcting

revision:    6:32c312e7072e
user:        Adam Victor Nazareth Brandizzi <brandizzi@gmail.com>
date:        Wed Aug 08 11:48:55 2012 -0300
summary:     Adding period

revision:    5:f332e0ecee4d
user:        Adam Victor Nazareth Brandizzi <brandizzi@gmail.com>
date:        Wed Aug 08 11:48:39 2012 -0300
summary:     Moving to correct name

revision:    4:5850a93d80dd
user:        Adam Victor Nazareth Brandizzi <brandizzi@gmail.com>
date:        Wed Aug 08 11:48:05 2012 -0300
summary:     More content on second file

revision:    3:0098ebd2cea5
user:        Adam Victor Nazareth Brandizzi <brandizzi@gmail.com>
date:        Wed Aug 08 11:47:41 2012 -0300
summary:     A third file

revision:    2:096c984a8f2a
user:        Adam Victor Nazareth Brandizzi <brandizzi@gmail.com>
date:        Wed Aug 08 11:47:09 2012 -0300
summary:     More content on 1st file

revision:    1:b9491918efcc
user:        Adam Victor Nazareth Brandizzi <brandizzi@gmail.com>
date:        Wed Aug 08 11:46:52 2012 -0300
summary:     My second file

revision:    0:4e429ac2fee9
user:        Adam Victor Nazareth Brandizzi <brandizzi@gmail.com>
date:        Wed Aug 08 11:46:23 2012 -0300
summary:     My first file

您可以使用带有Convert extension选项的--filemap提取项目。

怎么做?首先,您应该创建一个文件映射文件。在这种情况下,内容应为:

rename proj1 .
exclude proj2
exclude proj3

第一行会将proj1目录中的所有内容移动到新存储库的根目录。第二行将从新存储库中删除proj2目录,第三行将删除proj3

要使用它,请按以下方式调用:

$ hg convert --filemap proj1filemap hgmultiproject/ extracted-proj1

现在,输入新的仓库:

$ cd extracted-proj1/

它没有工作副本......

extracted-proj1 $ ls

但你只需要更新:

extracted-proj1 $ hg update
1 updated files, 0 merged files, 0 deleted files, 0 nonresolved files
extracted-proj1 $ ls
myfirstfile

新日志是......

extracted-proj1 $ hg log
revision:    2:eb31727c0df8
tag:         tip
user:        Adam Victor Nazareth Brandizzi <brandizzi@gmail.com>
date:        Wed Aug 08 11:48:55 2012 -0300
summary:     Adding period

revision:    1:e701f0ad5335
user:        Adam Victor Nazareth Brandizzi <brandizzi@gmail.com>
date:        Wed Aug 08 11:47:09 2012 -0300
summary:     More content on 1st file

revision:    0:c0b6ad18ff22
user:        Adam Victor Nazareth Brandizzi <brandizzi@gmail.com>
date:        Wed Aug 08 11:46:23 2012 -0300
summary:     My first file

您应该对存储库的每个项目执行以下步骤。

答案 1 :(得分:1)