Re: git svn: Supporting multiple branch subdirs?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Marc Branchaud venit, vidit, dixit 15.06.2009 19:29:
> Michael J Gruber wrote:
>>
>> After doing the init with "--branches=stable" (without releng), do
>> git config --add svn-remote.svn.branches 'releng/*:refs/remotes/*'
>>
>> This gives you two branches refspecs in .git/config (feel free to put
>> them in different dirs under remotes if there may be name clashes
>> between stable and releng branches).
> 
> That doesn't seem to work...

No, it doesn't I'm sorry. I knew that git-svn lumps multiple command
line arguments into one, but it does so also for config lines. I didn't
know that but confirmed from a test (and the source).

Now, one last resort would be a more complicated regexp. Unfortunately,
something like

branches = (releng|stable)/*:refs/remotes/*/*

does not work (regexps don't work, only globs)

and something like

branches = */*:refs/remotes/*/*

works in principle but gets everything under head wrong.

> 
> Here's my .git/config file before the first fetch:
> 
> [svn-remote "svn"]
>         useSvnsyncProps = 1
>         ignore-paths = ^[^/]+/(?:cvs2svn|projects|svnadmin|user|vendor.*)
>         url = file:///home/marcnarc/Code/FreeBSD-all-mirror/base
>         fetch = head:refs/remotes/trunk
>         branches = stable/*:refs/remotes/stable/*
>         branches = releng/*:refs/remotes/releng/*
>         tags = release/*:refs/remotes/tags/*
> 
> (Shouldn't that fetch line be head:refs/remots/head, since there's nothing called "trunk" in the svn repo?  I used git-svn init --trunk=head ...)

The left hand side of the refspec refers to the svn repo, the right hand
side only names your local ref. Feel free to put "head" there, although
this can be confused very easily with "HEAD" which has special meaning
in git.

>> I assume that git-svn converts such an svn commit into several git
>> commits, one for each affected branch. Since you have a local mirror
>> it's easy to try out.
> 
> Yep, git-svn does just that.  Nice!
> 
> 		M.

At least I got one thing right :)

I've used multiple svn-remote sections before (in cases where the repo
structure changed) but I'm afraid this is of no use here. Looking at the
source of git-svn, one sees that "tags" and "branches" are basically
treated the same way, they are simply members of a "remote"
struct/object/whatever it's called in perl and only differ in their
standard refspec. Noone keeps us from adding "branches2" for a quick
hack and checking whether everything stays sane... (git-svn perl often
loops over "branches tags", that needs to be replaced).

In fact, I think the way to go would be replacing the two by an array.
As a next step, the command line parsing and config reading needs to be
changed so that multiple branches or tags entries end up generating
multiple members of that array. Now this only needs to be implemented ;)

Michael

P.S.: Let me know if you give it a shot, so that we don't duplicate our
waste of time...
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]