threads / discuss / 32431

Right way to import a repo

Subject: Right way to import a repo

## tl;dr

2 messages between Dec 21, 2012 and Dec 22, 2012.

replies: 1people: 2as markdown or json

Florian Lindner· Dec 21, 2012, 16:11 UTC · lore
Hello,

I have two repositories. tools and flof. I want to merge flof into tools (and flof will be deleted after that) while keeping history intact. Of course I've googled that and found a number of different solution which all seem to be pretty komplex, so I just tried it myself. It seems to work.... are there any problems with my approach?

~/software/tools.test (git)-[master] % git remote add fl ~/flof
~/software/tools.test (git)-[master] % git fetch fl
warning: no common commits
remote: Counting objects: 475, done.
remote: Compressing objects: 100% (460/460), done.
remote: Total 475 (delta 251), reused 0 (delta 0)
Receiving objects: 100% (475/475), 190.40 KiB, done.
Resolving deltas: 100% (251/251), done.
From /home/florian/flof
 * [new branch]      master     -> fl/master
 * [new branch]      v2-rewrite -> fl/v2-rewrite

/software/tools.test (git)-[master] % git checkout -b import fl/master Branch import set up to track remote branch master from fl. Switched to a new branch 'import'

Doing some mkdir und git mv for reorganisation.
~/software/tools.test/flof (git)-[import] % git commit -m "Reorganize flof."
[import a00ab54] Reorganize flof.
 152 files changed, 0 insertions(+), 0 deletions(-)
 rename {doc => flof/doc}/common.rst (100%)
 rename {doc => flof/doc}/conf.py (100%)
 [...]

~/software/tools.test/flof (git)-[import] % git checkout master Switched to branch 'master'

~/software/tools.test (git)-[master] % git merge import Auto-merging .gitignore CONFLICT (add/add): Merge conflict in .gitignore Automatic merge failed; fix conflicts and then commit the result.

Resolving the conflict.
~/software/tools.test (git)-[master|merge] % git add .gitignore

~/software/tools.test (git)-[master|merge] % git commit -m "Merged flof." [master b8c85be] Merged flof.

~/software/tools.test (git)-[master] % git remote rm fl

Are thery any problems with this procedure? The history seems to intact. I'm quite unsure since still being a git beginner.

Thanks,
Florian
Michael J Gruber· Dec 22, 2012, 17:57 UTC · re: Florian Lindner · lore

Re: Right way to import a repo

Florian Lindner venit, vidit, dixit 21.12.2012 17:11:
Show 21 quoted lines
> Hello,
> 
> I have two repositories. tools and flof. I want to merge flof into tools (and 
> flof will be deleted after that) while keeping history intact. Of course I've 
> googled that and found a number of different solution which all seem to be 
> pretty komplex, so I just tried it myself. It seems to work.... are there any 
> problems with my approach?
> 
> ~/software/tools.test (git)-[master] % git remote add fl ~/flof
> 
> ~/software/tools.test (git)-[master] % git fetch fl
> warning: no common commits
> remote: Counting objects: 475, done.
> remote: Compressing objects: 100% (460/460), done.
> remote: Total 475 (delta 251), reused 0 (delta 0)
> Receiving objects: 100% (475/475), 190.40 KiB, done.
> Resolving deltas: 100% (251/251), done.
> From /home/florian/flof
>  * [new branch]      master     -> fl/master
>  * [new branch]      v2-rewrite -> fl/v2-rewrite
> 
Two disjoint histories, nothing wrong with that.
Show 5 quoted lines
> /software/tools.test (git)-[master] % git checkout -b import fl/master
> Branch import set up to track remote branch master from fl.
> Switched to a new branch 'import'
> 
> Doing some mkdir und git mv for reorganisation.

Here avoid possible problems from both projects using the same root (in the filesystem/tree sense).

Show 26 quoted lines
> ~/software/tools.test/flof (git)-[import] % git commit -m "Reorganize flof."
> [import a00ab54] Reorganize flof.
>  152 files changed, 0 insertions(+), 0 deletions(-)
>  rename {doc => flof/doc}/common.rst (100%)
>  rename {doc => flof/doc}/conf.py (100%)
>  [...]
> 
> ~/software/tools.test/flof (git)-[import] % git checkout master
> Switched to branch 'master'
> 
> ~/software/tools.test (git)-[master] % git merge import
> Auto-merging .gitignore
> CONFLICT (add/add): Merge conflict in .gitignore
> Automatic merge failed; fix conflicts and then commit the result.
> 
> Resolving the conflict.
> 
> ~/software/tools.test (git)-[master|merge] % git add .gitignore
> 
> ~/software/tools.test (git)-[master|merge] % git commit -m "Merged flof."
> [master b8c85be] Merged flof.
> 
> ~/software/tools.test (git)-[master] % git remote rm fl
> 
> Are thery any problems with this procedure? The history seems to intact. I'm 
> quite unsure since still being a git beginner. 

It works in the sense that git follows the renames (moves) you had to do prior to the merge.

Other tools like git-subtree do that history implanting in one step, by putting the added project into a subtree (rewriting the history). That way you don't have reorg commits in the history.

Michael

← back to recent threads