简体   繁体   中英

git-svn problem

Is it possible to clone a git repository which has more than one revisions? We tried to do it, and after the 1000'th commit it does a GC and exits leaving the clone in a unusable state.

r998 = a5cb4f6a377b0ca80cd95d73b0e32f0552b9cdfd (git-svn)
M   trunk/asdf/asdf.java
r999 = a87b06ae8aa497bb28c294b7ff8668ce2e4c8fcc (git-svn)
D   tags/sdafasdf/asdfasdf.java
r1000 = 20b383d138499eee4f121079ae059458f3facc94 (git-svn)
Auto packing your repository for optimum performance. You may also
run "git gc" manually. See "git help gc" for more information.
Counting objects: 18103, done.
Compressing objects:  61% (10590/17116)      7116)   
Compressing objects: 100% (17116/17116), done.
Writing objects: 100% (18103/18103), done.
Total 18103 (delta 9301), reused 0 (delta 0)
Removing duplicate objects: 100% (256/256), done.
root@host:~#

Attempting to continue the checkout by typing the command again results in the following:

root@host:~/repo# git svn clone https://host/svn/repo
Remote ref refs/remote/git-svn is tracked by
  "svn-remote.svn.fetch=:refs/remotes/git-svn"
and
  "svn-remote.svn.fetch=:refs/remotes/git-svn"
Please resolve this ambiguity in your git configuration file before continuing

Worked out the answer. There must be some sort of bug when using the version of git that comes with ubuntu. The following line appeared twice in the newly created .git/config file:

svn-remote.svn.fetch=:refs/remotes/git-svn
svn-remote.svn.fetch=:refs/remotes/git-svn

Removing the duplicate has allowed me to type a git svn fetch which seems to be continuing the checkout.

This happened a lot to me. I just re-ran exactly the same git command again and it continued from where it left off. Eventually it gets to the end and everything works.

Edit: If this problem happens when running git svn clone ... , then you want to replace clone with fetch when you rerun the command.

Yes. It should work just fine. I cloned the Mono project repository (over 140k revisions) using the following commands:

$ mkdir mono
$ cd mono
$ git init
$ git svn init svn+ssh://foo@mono-cvs.ximian.com/source
$ git config svn-remote.svn.fetch trunk/mono:refs/remotes/git-svn/trunk
$ git config svn-remote.svn.branches branches/*/mono:refs/remotes/git-svn/branches/*
$ git config svn-remote.svn.tags tags/*/mono:refs/remotes/git-svn/tags/*
$ git fetch git://repo.or.cz/mono.git refs/heads/master:refs/remotes/git-svn/trunk refs/heads/branches/*:refs/remotes/git-svn/branches/* refs/tags/*:refs/remotes/git-svn/tags/*
$ git reset --hard git-svn/trunk

and everything went ok. Is that similar to what you're doing?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM