git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Efficient cloning from svn (with multiple branches/tags subdirs)

From
BHBruno Harbulot <bruno.harbulot@manchester.ac.uk>
Date
Oct 13, 2009, 18:13 UTC
Message-ID
<hb2fvu$8qi$1@ger.gmane.org>
Hello,
I'm trying to clone an existing subversion repository (Restlet: 
http://restlet.tigris.org/source/browse/). I'm using Git 1.6.5. The 
layout of the project is like this:
   trunk/
   branches/1.0
   branches/1.1
   tags/1.0/1.0b1
   tags/1.0/1.0b2
   ...
   tags/1.0/1.0.1
   ...
   tags/1.1/1.1.0
   tags/1.1/1.1.1
   ...

Therefore, I've tried to use this (with and without '-T trunk', but that's a separate problem):

   git init
   git svn init --prefix=svn/ -t tags/1.0 -t tags/1.1 -t tags/1.2 -t 
tags/2.0 -b branches/1.0 -b branches/1.1 
http://restlet.tigris.org/svn/restlet
   git svn fetch
This takes a while (I've had to interrupt this) and this creates a 
number of branches such as:
   remotes/svn/tags/1.0b1
   remotes/svn/tags/1.0b2
   remotes/svn/tags/1.0b3
   remotes/svn/tags/1.0b3@1883
   remotes/svn/tags/1.0b3@323

What surprises me is that it looks like it's looping over and over, since sometimes it starts back from SVN revision 1 when it's trying to import a new tag.

Tt starts like this:
Show 11 quoted lines
> 
> Checked through r101
> Checked through r201
> Checked through r301
>       A       www/index.html
> r1 = 2ec77afc2e491e2b7c825cb685101e3bcbe7a8f7 (refs/remotes/svn/tags/1.0b1@312)
>         A       source/impl/License.txt
>         A       source/impl/Copyright.txt
>         A       source/impl/org/restlet/UniformInterface.java
>         A       source/impl/org/restlet/RestletException.java
> ...
Then, when it reaches r312, it starts again at r1:
Show 14 quoted lines
> r312 = 5b40558b5bb2b4b04f9520f89b699ff6b0f50cdb (refs/remotes/svn/tags/1.0b1@312)
> r313 = 7ebcbd9da535cfdc23aacb612271e625445a7516 (refs/remotes/svn/tags/1.0b1@1881)
> r1882 = aed1582d4868a1be8ae8fcc0f15546822099f339 (refs/remotes/svn/tags/1.0b1)
> Checked through r101
> Checked through r201
> Checked through r301
>       A       www/index.html
> r1 = 2ec77afc2e491e2b7c825cb685101e3bcbe7a8f7 (refs/remotes/svn/tags/1.0b2@321)
>         A       source/impl/License.txt
>         A       source/impl/Copyright.txt
>         A       source/impl/org/restlet/UniformInterface.java
>         A       source/impl/org/restlet/RestletException.java
>         A       source/impl/org/restlet/AbstractRestlet.java
>         A       source/impl/org/restlet/connector/Resolver.java
(And so on for each tag).

This seems particularly inefficient and unfriendly for the resource provider (I stopped as soon as I noticed). Is there a better way to do this?

Best wishes,
Bruno.
Next: Eric Wong
Message 1 of 9 in “Efficient cloning from svn (with multiple branches/tags subdirs)”
  1. Bruno HarbulotOct 13, 2009
  2. Eric WongOct 14, 2009
  3. Bruno HarbulotOct 14, 2009
  4. Avery PennarunOct 14, 2009
  5. Eric WongOct 14, 2009
  6. Avery PennarunOct 14, 2009
  7. Bruno HarbulotOct 15, 2009
  8. B Smith-MannschottOct 15, 2009
  9. Bruno HarbulotOct 16, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.