sobota 29. března 2014

Jak na merge SVN repo do GIT repo

Pokud se někdy dostanete do situace, že potřebujete stejný zdrojový kód mergovat mezi SVN a GITem, tak řešení samozřejmě existuje:

# checkout the SVN source
$ svn checkout svn://svnversion/trunk
$ cd /into/svn/checkout

$ git init
$ echo ".svn/" > .gitignore
$ git add .gitignore; git commit -m 'Initial .gitignore'

# Now you have a master branch; create your svn branch
$ git checkout -b svn

# Add *everything* from the SVN checkout
$ git add -A
$ git commit -m 'Initial SVN'

# Now get the GIT developed stuff
$ git checkout master
$ git remote add origin /path/to/git-developed-repository
$ git pull origin master

# Now merge SVN repository to GIT master branch
$ git checkout master
$ git merge svn
# push to GIT origin

# Or merge master branch GIT repository to SVN
$ git checkout svn
$ git merge master
# commit to SVN

Nyní byste měli mít všechny změny ze SVN i v master branchi v GITu a nebo naopak.

Nevýhodou tohoto řešení je, že s sebou nepřenáší historii. Důležité však je, že stejný kód je na obou místech.


Zdroj: stackoverflow.com