threads / discuss / 13107

Canonical method of merging two projects

Subject: Canonical method of merging two projects

## tl;dr

3 messages between Apr 14, 2008 and Apr 14, 2008.

replies: 2people: 3as markdown or json

Peter Karlsson· Apr 14, 2008, 06:37 UTC · lore
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· Apr 14, 2008, 06:56 UTC · re: Peter Karlsson · lore

Re: Canonical method of merging two projects

Hello,
On Mon, 14 Apr 2008 07:37:17 +0100, Peter Karlsson wrote:
Show 10 quoted lines
> 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· Apr 14, 2008, 18:10 UTC · re: Gabriel · lore

Re: Canonical method of merging two projects

Gabriel <g2p.code <at> gmail.com> writes:
Show 21 quoted lines
> 
> 
> 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

← back to recent threads