# Canonical method of merging two projects

3 messages from 2008-04-14 to 2008-04-14. Participants: Peter Karlsson, Gabriel, Eric Raible.
Thread: https://gitlist.dev/t/13107

## Peter Karlsson, 2008-04-14 06:37

Subject: Canonical method of merging two projects
Message-ID: <Pine.LNX.4.64.0804140733500.7014@ds9.cixit.se>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0804140733500.7014%40ds9.cixit.se

```
Hi!

What is the canonical way of merging an unrelated project into another
so that all of the merged project's files appear in a sub-directory of
the first?

I have two projects, A with files "a.txt" and "b.txt", and B with files
"a.txt" and "c.txt", each in a separate Git repoistory. I want to merge
those two projects, throwing away the B repository, and achieve a
file layout that has "a.txt" and "b.txt" from A, and "B/a.txt" and
"B/c.txt" from B. I.e, the two files with the same name are unrelated,
and all of B's file should end up in a sub-directory.

I do not want to use submodules, since I am planning on throwing B
away.


When I did this, I did a regular "git merge --no-commit", and then
moved the files manually. Thankfully, I only had one duplicated file
name, so fixing the conflict was easy enough. I looked through the
git-merge manual page, but could not find any information about this
use-case.

-- 
\\// Peter - http://www.softwolves.pp.se/

```

## Gabriel, 2008-04-14 06:56

Subject: Re: Canonical method of merging two projects
Message-ID: <ftuv6o$vch$1@ger.gmane.org>
URL: https://gitlist.dev/e/ftuv6o%24vch%241%40ger.gmane.org
In-Reply-To: <Pine.LNX.4.64.0804140733500.7014@ds9.cixit.se>

```

Hello,

On Mon, 14 Apr 2008 07:37:17 +0100, Peter Karlsson wrote:

> What is the canonical way of merging an unrelated project into another
> so that all of the merged project's files appear in a sub-directory of
> the first?
> 
> I have two projects, A with files "a.txt" and "b.txt", and B with files
> "a.txt" and "c.txt", each in a separate Git repoistory. I want to merge
> those two projects, throwing away the B repository, and achieve a file
> layout that has "a.txt" and "b.txt" from A, and "B/a.txt" and "B/c.txt"
> from B. I.e, the two files with the same name are unrelated, and all of
> B's file should end up in a sub-directory.

This is exactly what the subtree “merge strategy” does;
there is a HOWTO here:
http://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html

```

## Eric Raible, 2008-04-14 18:10

Subject: Re: Canonical method of merging two projects
Message-ID: <loom.20080414T180449-850@post.gmane.org>
URL: https://gitlist.dev/e/loom.20080414T180449-850%40post.gmane.org
In-Reply-To: <ftuv6o$vch$1@ger.gmane.org>

```
Gabriel <g2p.code <at> gmail.com> writes:

> 
> 
> Hello,
> 
> On Mon, 14 Apr 2008 07:37:17 +0100, Peter Karlsson wrote:
> 
> > What is the canonical way of merging an unrelated project into another
> > so that all of the merged project's files appear in a sub-directory of
> > the first?
> > 
> > I have two projects, A with files "a.txt" and "b.txt", and B with files
> > "a.txt" and "c.txt", each in a separate Git repoistory. I want to merge
> > those two projects, throwing away the B repository, and achieve a file
> > layout that has "a.txt" and "b.txt" from A, and "B/a.txt" and "B/c.txt"
> > from B. I.e, the two files with the same name are unrelated, and all of
> > B's file should end up in a sub-directory.
> 
> This is exactly what the subtree “merge strategy” does;
> there is a HOWTO here:
> http://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.html
> 

Because the OP is asking about a one-time operation I thought that it might
be easier to instead move all of B's files into a new directory (B/Bproj),
and then commit that in B.

A can then simply pull B, and all of B's files will end up in A/Bproj.

- Eric

```
