The problem is a simple one. I’ve used git cvsimport to import a cvs repo into a remote branch in a local git repository. I then wish to sync this repository: branches, tags, and all, to a git repository in the cloud (github / gitorious). To do this I don’t have the access to rsync or copy the repository directly, I have to use git push.
How do I go about mirroring my local repository so others have access to the full _cvsimport_d history?
Concretely:
I import and track a repository using cvsimport:
git cvsimport -i -v -C cdt-make-core -d :pserver:anonymous@dev.eclipse.org:/cvsroot/tools -r cvs org.eclipse.cdt/all/org.eclipse.cdt.make.core
The above imports org.eclipse.cdt.make.core into the remote cvs in the git repo cdt-make-core.
I can then push the HEAD of the main CVS branch to github:
git push github cvs/master:refs/heads/cvs/HEAD
(I specify the path on the remote explicitly so if it doesn’t exist it’s created.)
Is there any way to sync all the branches: cvs/* => cvs/* on the remote?
Is there any way to sync all the tags?
My findings are that if you use the 2nd reasonable solution below, you need to do the –mirror first, because it wipes out those cvs/ branches you’re trying to push. So the complete formula is: