I started cloning a SVN repository using git-svn's clone operation. After about 6 hours of importing (it's a bit repo), my computer went and slept on me. Is there a way to resume the operation without redoing all of the initial work?
I found a blog post that provided what (I hope) is a correct answer.
Apparently, running git svn fetch
effectively completes the clone operation. Here's hoping!
The git svn fetch
command to resume a git svn clone
is confirmed by several sources:
- Git svn and Gnome blog entry
(Incidentally, if during the initial clone step your connection dies or you need to stop it then to resume the clone you just have to run the above command to resume downloading the history).
There seems to be a memory leak in
git-svn
. The size of thegit-svn
process grew slowly and after about two weeks it was at 1.2 GB resident size, at which point the OS refused to let it fork.
Thing is, this was a blessing in disguise.
I was able to resume the interrupted clone with a simple "git svn fetch
", and it ran much faster with the now radically smaller heap.
This, worked so well, in fact, that I got into the habit of interrupting and restarting the process every evening and every morning. A few days later it was done.
You start your adventures with
git-svn
by cloning an existing Subversion repository:
git svn clone url://path/to/repo -s
The
-s
flag assumes that your repository uses the "trunk, branches, tags" convention. If not, you have to specify manually which directories represent branches and tags, if you want Git to know about them.This will take a long time, as it will fetch every single revision from SVN and commit locally. If for any reason it stops, you can resume with
git svn fetch
.