简体   繁体   中英

Combining multiple repositories of multiple projects into a single repository of an over-arching solution in Visual Studio 2010?

Suppose I have two Visual Studio 2010 projects, both in the same solution.

One project is a dll library for performing task x. And the other is a Windows Forms GUI Frontend for that library.

Let's also suppose that I started developing both these projects using two different mercurial repositories, (one for each project).

Suppose I wanted to combine these two repositories into one repository of the overarching solution of both projects (without losing any of my commit messages).

Would this be possible (or even for that matter a good idea?)

You bet! Here's the short answer: https://www.mercurial-scm.org/wiki/MergingUnrelatedRepositories

Let's say you have two repositories

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

Here's r1:

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

Here's r2:

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

We'll make create another repository called "merged" by cloning "r1".

$>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

Now we need to pull "r2" in:

$>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)

Finally, we need to merge them together and commit the changes:

$>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

All done! Here's our merged repo:

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

Let's see what we've got in history...

$>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

Success!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM