如何使用git svn命令呢?
1. Create Subversion-aware Git clone
Naturally, your official source tree lives on some Git-capable server, which we denote by $GIT_REPO. http://code.google.com/hosting/createProject creating a new Google Code project, initialize an intermediary repository and fetch the Git tree:
?$ git svn clone --username you https://your-project.googlecode.com/svn/trunk??$ cd trunk??$ git fetch $GIT_REPO
The Subversion repository must be nonempty. A new Google Code project contains one revision by default, but if you reset it, you should also create a first revision.
Create a temporary branch for the fetched repository, and tag its head:
?$ git branch tmp $(cut -b-40 .git/FETCH_HEAD)??$ git tag -a -m "Last fetch" last tmp2. Apply initial commit
Unfortunately, Git treats the initial commit specially, and in particular, cannot rebase it. Work around this as follows:
?$ INIT_COMMIT=$(git log tmp --pretty=format:%H | tail -1)??$ git checkout $INIT_COMMIT .??$ git commit -C $INIT_COMMIT3. Rebase and submit
Apply all the other commits to the temporary branch, and make it the new master branch:
?$ git rebase master tmp??$ git branch -M tmp master
Lastly, commit the changes to Google Code:
?$ git svn dcommit
To more faithfully represent deleted subdirectories and copies of unmodified files, run dcommit with the options \--rmdir and \--find-copies-harder. Be aware the latter option can be expensive.
4. Update Google CodeLater, export Git repository updates to Google Code as follows:
?$ git fetch $GIT_REPO??$ git branch tmp $(cut -b-40 .git/FETCH_HEAD)??$ git tag -a -m "Last fetch" newlast tmp??$ git rebase --onto master last tmp??$ git branch -M tmp master??$ git svn dcommit??$ mv .git/refs/tags/newlast .git/refs/tags/last