怎么使用git svn命令呢

如何使用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 tmp

2. 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_COMMIT

3. 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 Code

Later, 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