1

I am currently doing a git svn clone from an svn repository that has quite a few branches and tags, and it is taking quite long time (2 hours and counting). Is it fetching file contents from all of the branches, or just from the trunk? If the former, is it smart enough to see when the branches were created, thus not grabbing duplicate files?

4

1 に答える 1

2

Git-svn is very slow because it asks the subversion server for every single commit and replays them one by one locally. Thus, the Git repo contains everything when the operation completes (trunk, branches and tags). But it takes a very very long time.

The git-svn command has IMO two major problems :

  • It is not able to filter out revisions that are not concerned by the the svn subtree you are trying to clone, (i.e. it fetches every single commit from the SVN root folder even if they do not affect the subtree you are cloning)
  • It fetches commits from the beginning, preventing you to start to work before it is completely done.

I advise you to have a look on the SmartGit client (syntevo.com/smartgit), which implements a totally refactored git to svn bridge layer. With it, it takes just a few minutes to get an svn repo cloned and up and ready. The last revision are retrieved first in a few seconds, and after that the rest is fetched in the background, so that you can start to work very quickly.

于 2012-05-10T19:43:31.317 に答える