2

假设我有两个 Visual Studio 2010 项目,都在同一个解决方案中。

一个项目是用于执行任务 x 的 dll 库。另一个是该库的 Windows 窗体 GUI 前端。

我们还假设我开始使用两个不同的 mercurial 存储库(每个项目一个)来开发这两个项目。

假设我想将这两个存储库合并到两个项目的总体解决方案的一个存储库中(不会丢失我的任何提交消息)。

这是否可能(或者甚至是一个好主意?)

4

1 回答 1

9

你打赌!这是简短的答案:https ://www.mercurial-scm.org/wiki/MergingUnrelatedRepositories

假设您有两个存储库

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         3/24/2011   7:33 AM            r1
d----         3/24/2011   7:35 AM            r2

这是r1:

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         3/24/2011   7:33 AM            .hg
-a---         3/24/2011   7:33 AM         85 file1.txt

这是r2:

Mode                LastWriteTime     Length Name
----               -------------     ------ ----
d----         3/24/2011   7:35 AM            .hg
-a---         3/24/2011   7:33 AM         89 file2.txt

我们将通过克隆“r1”来创建另一个名为“merged”的存储库。

$>hg clone r1 merged
updating to branch default
resolving manifests
getting file1.txt
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$>cd merged

现在我们需要拉入“r2”:

$>hg pull -f ..\r2
pulling from ..\r2
searching for changes
warning: repository is unrelated
2 changesets found
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 1 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)

最后,我们需要将它们合并在一起并提交更改:

$>hg merge
resolving manifests
getting file2.txt
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$>hg commit -m "Merged two both repos"
file2.txt
committed changeset 4:40028ef336d9

全部完成!这是我们合并的仓库:

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         3/24/2011   7:36 AM            .hg
-a---         3/24/2011   7:36 AM         85 file1.txt
-a---         3/24/2011   7:36 AM         89 file2.txt

让我们看看我们在历史上得到了什么......

$>hg log
changeset:   4:40028ef336d9
tag:         tip
parent:      1:464b7426220c
parent:      3:3b5eba6d03ef
user:        Joe Schmoe <schomej@inter.net>
date:        Thu Mar 24 07:36:58 2011 -0700
description:
Merged two both repos

changeset:   3:3b5eba6d03ef
user:        Joe Schmoe <schomej@inter.net>
date:        Thu Mar 24 07:35:02 2011 -0700
files:       file2.txt
description:
Added second line to second file

changeset:   2:c26449adfb4d
parent:      -1:000000000000
user:        Joe Schmoe <schomej@inter.net>
date:        Thu Mar 24 07:32:52 2011 -0700
files:       file2.txt
description:
Added first line of second file

changeset:   1:464b7426220c
user:        Joe Schmoe <schomej@inter.net>
date:        Thu Mar 24 07:33:47 2011 -0700
files:       file1.txt
description:
Added second line to first file

changeset:   0:51cb60e8a68a
user:        Joe Schmoe <schomej@inter.net>
date:        Thu Mar 24 07:31:59 2011 -0700
files:       file1.txt
description:
Added first line to first file

成功!

于 2011-03-24T14:38:06.303 回答