threads / discuss / 17562

hot to fix git svn import or just discard 'branches' folder

Subject: hot to fix git svn import or just discard 'branches' folder

## tl;dr

5 messages between Feb 4, 2009 and Feb 4, 2009.

replies: 4people: 2as markdown or json

Marius Seritan· Feb 4, 2009, 17:03 UTC · lore
I imported over night an svn repository with the command:
git svn clone --prefix svn/ -r 860  http://svn.some.com/svn/someproject

The svn repository uses the usual trunk, branches, tag so I (wrongly?) assumed I do not need to pass any command switches regarding the structure of the repo.

I obviously did something wrong because now I have a git repository with just one remote branch and it contains the folders trunk, branches and tag. I do not want to reimport because it is taking lots of time and bandwidth.

How can I fix this? I do not really need the old branches and tags, I want to be able to track new branches and I just want to have the trunk history.

Thanks for any pointers.
Marius
Brian Gernhardt· Feb 4, 2009, 18:39 UTC · re: Marius Seritan · lore

Re: hot to fix git svn import or just discard 'branches' folder

On Feb 4, 2009, at 12:03 PM, Marius Seritan wrote:
Show 8 quoted lines
> I imported over night an svn repository with the command:
>
> git svn clone --prefix svn/ -r 860  http://svn.some.com/svn/ 
> someproject
>
> The svn repository uses the usual trunk, branches, tag so I  
> (wrongly?) assumed I do not need to pass any command switches  
> regarding the structure of the repo.

"git svn clone URL" attempts to act like "svn co URL", but with history. If you only want to download the trunk, then you should add "/trunk" to the end of the URL. If you want to capture all the branches, tags, etc you should use "--stdlayout" (also spelled "-s").

> I obviously did something wrong because now I have a git repository  
> with just one remote branch and it contains the folders trunk,  
> branches and tag. I do not want to reimport because it is taking  
> lots of time and bandwidth.

I believe fixing this without reimporting requires using "git filter- branch". I'm unfamiliar with it, so I can't help you with that part.

However, I'm curious as to why this took a lot of time because the "-r 860" on the command line should tell git-svn to only download a single revision. Is it a particularly repository?

~~ Brian
Marius Seritan· Feb 4, 2009, 19:05 UTC · re: Brian Gernhardt · lore

Re: hot to fix git svn import or just discard 'branches' folder

Thanks Brian,
On Feb 4, 2009, at 10:39 AM, Brian Gernhardt wrote:
Show 15 quoted lines
>
> On Feb 4, 2009, at 12:03 PM, Marius Seritan wrote:
>
>> I imported over night an svn repository with the command:
>>
>> git svn clone --prefix svn/ -r 860  http://svn.some.com/svn/someproject
>>
>> The svn repository uses the usual trunk, branches, tag so I  
>> (wrongly?) assumed I do not need to pass any command switches  
>> regarding the structure of the repo.
>
> "git svn clone URL" attempts to act like "svn co URL", but with  
> history.  If you only want to download the trunk, then you should  
> add "/trunk" to the end of the URL.  If you want to capture all the  
> branches, tags, etc you should use "--stdlayout" (also spelled "-s").

I want to capture the current trunk and any new branches. It seems the -s is required if I do a reimport.

Show 9 quoted lines
>
>
>> I obviously did something wrong because now I have a git repository  
>> with just one remote branch and it contains the folders trunk,  
>> branches and tag. I do not want to reimport because it is taking  
>> lots of time and bandwidth.
>
> I believe fixing this without reimporting requires using "git filter- 
> branch".  I'm unfamiliar with it, so I can't help you with that part.

Thanks, I will look into it. From the first read this seems to be pretty advanced.

Show 5 quoted lines
>
>
> However, I'm curious as to why this took a lot of time because the "- 
> r 860" on the command line should tell git-svn to only download a  
> single revision.  Is it a particularly repository?

All of the repository was imported including branches in spite of the - r. This is private repository for a company's web site, it has your usual assortment of jars and the history has a dozen branches and a couple of tags. The size on the disk is about 3GB, I was a bit surprised by it.

Marius
>
>
> ~~ Brian
Marius Seritan· Feb 4, 2009, 19:24 UTC · re: Marius Seritan · lore

Re: hot to fix git svn import or just discard 'branches' folder

On Feb 4, 2009, at 11:05 AM, Marius Seritan wrote:
Show 7 quoted lines
>>
>> I believe fixing this without reimporting requires using "git  
>> filter-branch".  I'm unfamiliar with it, so I can't help you with  
>> that part.
>
> Thanks, I will look into it. From the first read this seems to be  
> pretty advanced.
Ok, I think I killed it :-/

I did git filter-branch --subdirectory-filter trunk -- --all

This cleaned up git and I have just the trunk for 218MB, that's much more acceptable. Unfortunately 'git svn rebase' now returns:

Unable to determine upstream SVN information from working tree history

I went into the .git/config and added a trunk but no luck. I also edited .git/svn/.metadata in the same way.

As another data point git svn log is still working.
Marius
Marius Seritan· Feb 4, 2009, 20:21 UTC · re: Marius Seritan · lore

Re: hot to fix git svn import or just discard 'branches' folder

On Feb 4, 2009, at 11:24 AM, Marius Seritan wrote:
Show 29 quoted lines
>
> On Feb 4, 2009, at 11:05 AM, Marius Seritan wrote:
>>>
>>> I believe fixing this without reimporting requires using "git  
>>> filter-branch".  I'm unfamiliar with it, so I can't help you with  
>>> that part.
>>
>> Thanks, I will look into it. From the first read this seems to be  
>> pretty advanced.
>
> Ok, I think I killed it :-/
>
> I did
> git filter-branch --subdirectory-filter trunk -- --all
>
> This cleaned up git and I have just the trunk for 218MB, that's much  
> more acceptable. Unfortunately 'git svn rebase' now returns:
>
> Unable to determine upstream SVN information from working tree history
>
> I went into the .git/config and added a trunk but no luck. I also  
> edited .git/svn/.metadata in the same way.
>
> As another data point git svn log is still working.
>
>
> Marius
>
>

Last follow-up on svn git. I ended up re-reading the docs (duh) and doing the following:

git svn init -s --prefix=svn/ http://svn.name.com/svn/project git svn fetch -r 800:HEAD

This brought down the last 2 branches and the trunk. It took a couple of minutes and uses 120MB of disk space. Much better than hours and 3GB of disk.

Love it,
Marius

← back to recent threads