Git-svn

From PaparazziUAV
Revision as of 14:15, 23 January 2010 by Flixr (talk | contribs) (add page on git)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

How to use git with the paparazzi subversion repository. See the Git - SVN crash course or the pretty comprehensive git-svn intro for more details.

Clone a git mirror

If you don't want to wait for ever when cloning the paparazzi3 subversion repository you can clone an already converted repository from github.

git clone git://github.com/flixr/paparazzi.git

If you list the remote branches with git branch -r, you can see that you now have the subversion branches under origin/svn/*. To update from this github mirror just run

git fetch

To be able to commit back to svn as well you will have to set this up. First make sure you have a proper svn-authors file (the AUTHORS file in the paparazi3 root dir has the correct format):

cp AUTHORS .git/svnauthorsfile

and tell git to use it

git config svn.authorsfile .git/svnauthorsfile

Since you only have the commits but not the SVN metadata you need to rebuild it. First make the all refs look just like they would look from a fresh import using git update-ref. To do this for all branches listed under origin/svn/ you can run this small script:

git for-each-ref refs/remotes/origin/svn/ | cut -d / -f 4- |
while read ref
do
git update-ref ref/remotes/svn/"$ref" origin/"$ref"
done

Tell git where to find the SVN repository and rebuild the index:

git svn init -s --prefix=svn/ svn+ssh://<username>@svn.savannah.nongnu.org/paparazzi/paparazzi3
git svn fetch

If you want to inspect your configuration work have a look at your .git/config file.

Import directly from subversion repository

You can directly import a subversion repository with

git svn clone URL

This will take a long time since git-svn will check out every revision in subversion.

To get the whole paparazzi3 repo including branches and tags and to get proper author information you need to add some options: The -s option refers to the standardlayout of the svn repository with trunk, branches and tags folders. The -A option specifies where to find the AUTORS file that is used to match svn users to the proper authors. Download the file (the AUTORS the paparazi3 root dir has the correct format).

If you have write access to the subversion repository run:

git svn clone -s --prefix=svn/ -A path/to/authorsfile svn+ssh://<username>@svn.savannah.nongnu.org/paparazzi/paparazzi3

For read-only access run:

git svn clone -s --prefix=svn/ -A path/to/authorsfile svn://svn.savannah.nongnu.org/paparazzi/paparazzi3