* git-svn with non-standard repository layout
@ 2012-12-04 17:29 Piotr Krukowiecki
[not found] ` <50BE68C9.7070100@cafu.de>
0 siblings, 1 reply; 6+ messages in thread
From: Piotr Krukowiecki @ 2012-12-04 17:29 UTC (permalink / raw)
To: Git Mailing List
Hi,
Is there a way to handle svn repository with following layout?
repo/trunk
repo/branches/branch1
repo/branches/branch2
repo/branches/work/developer1/branch3
repo/branches/work/developer1/branch4
repo/branches/work/developer2/branch5
In default configuration it treats "work" dir as a branch. If I
configure it with branches = branches/work/*/* it recognizes them
correctly, but then the "normal" branch1, branch2 are lost.
Ideally, I'd have one git repo with trunk, branches/{branch1,branch2},
work/developerX/branchY branches...
Any ideas?
--
Piotr Krukowiecki
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: git-svn with non-standard repository layout
[not found] ` <50BE68C9.7070100@cafu.de>
@ 2012-12-05 16:26 ` Piotr Krukowiecki
2012-12-05 16:44 ` Stephen Bash
0 siblings, 1 reply; 6+ messages in thread
From: Piotr Krukowiecki @ 2012-12-05 16:26 UTC (permalink / raw)
To: Carsten Fuchs, Git Mailing List
On Tue, Dec 4, 2012 at 10:19 PM, Carsten Fuchs <carsten.fuchs@cafu.de> wrote:
> Hi Piotr,
>
> Am 2012-12-04 18:29, schrieb Piotr Krukowiecki:
>
>> Is there a way to handle svn repository with following layout?
>>
>> repo/trunk
>> repo/branches/branch1
>> repo/branches/branch2
>> repo/branches/work/developer1/branch3
>> repo/branches/work/developer1/branch4
>> repo/branches/work/developer2/branch5
>
> see my post at
> http://www.cafu.de/forum/viewtopic.php?f=14&t=1092
> heading "Branches outside branches/".
>
> You may need something like
> git config --add svn-remote.svn.fetch
> "path.../branchX:refs/remotes/branchX"
> for each of your branches.
Thanks,
that works :)
Although not an ideal solution - I have to manually configure all
branches + update them as they are created
--
Piotr Krukowiecki
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: git-svn with non-standard repository layout
2012-12-05 16:26 ` Piotr Krukowiecki
@ 2012-12-05 16:44 ` Stephen Bash
2012-12-05 22:19 ` Piotr Krukowiecki
0 siblings, 1 reply; 6+ messages in thread
From: Stephen Bash @ 2012-12-05 16:44 UTC (permalink / raw)
To: Piotr Krukowiecki; +Cc: Git Mailing List
----- Original Message -----
> From: "Piotr Krukowiecki" <piotr.krukowiecki@gmail.com>
> Sent: Wednesday, December 5, 2012 11:26:54 AM
> Subject: Re: git-svn with non-standard repository layout
>
> On Tue, Dec 4, 2012 at 10:19 PM, Carsten Fuchs
> <carsten.fuchs@cafu.de> wrote:
> > Hi Piotr,
> >
> > Am 2012-12-04 18:29, schrieb Piotr Krukowiecki:
> >
> >> Is there a way to handle svn repository with following layout?
> >>
> >> repo/trunk
> >> repo/branches/branch1
> >> repo/branches/branch2
> >> repo/branches/work/developer1/branch3
> >> repo/branches/work/developer1/branch4
> >> repo/branches/work/developer2/branch5
> >
> > see my post at
> > http://www.cafu.de/forum/viewtopic.php?f=14&t=1092
> > heading "Branches outside branches/".
> >
> > You may need something like
> > git config --add svn-remote.svn.fetch
> > "path.../branchX:refs/remotes/branchX"
> > for each of your branches.
>
> that works :)
>
> Although not an ideal solution - I have to manually configure all
> branches + update them as they are created
It's not a 100% solution, but you can use a limited glob-like syntax in the branches and tags lines of the svn-remote config block. You still need to do some manual work (one entry for each developer), but the wildcards eliminate a lot of the grunt work as individual branches are created. See the very end of the git-svn manpage for examples (section titled CONFIGURATION). I use that technique to track a subdirectory of the Slimdevices SVN repo [1], which has a similarly complex layout:
repo/7.1/trunk
repo/7.1/branches/branchA
repo/7.1/branches/branchB
repo/7.1/tags/tag1
repo/7.2/trunk
repo/7.2/branches/branchC
...
HTH,
Stephen
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: git-svn with non-standard repository layout
2012-12-05 16:44 ` Stephen Bash
@ 2012-12-05 22:19 ` Piotr Krukowiecki
2012-12-05 23:54 ` Stephen Bash
0 siblings, 1 reply; 6+ messages in thread
From: Piotr Krukowiecki @ 2012-12-05 22:19 UTC (permalink / raw)
To: Stephen Bash; +Cc: Git Mailing List, Carsten Fuchs
On Wed, Dec 5, 2012 at 5:44 PM, Stephen Bash <bash@genarts.com> wrote:
> ----- Original Message -----
>> From: "Piotr Krukowiecki" <piotr.krukowiecki@gmail.com>
>> Sent: Wednesday, December 5, 2012 11:26:54 AM
>> Subject: Re: git-svn with non-standard repository layout
>>
>> On Tue, Dec 4, 2012 at 10:19 PM, Carsten Fuchs
>> <carsten.fuchs@cafu.de> wrote:
>> > Hi Piotr,
>> >
>> > Am 2012-12-04 18:29, schrieb Piotr Krukowiecki:
>> >
>> >> Is there a way to handle svn repository with following layout?
>> >>
>> >> repo/trunk
>> >> repo/branches/branch1
>> >> repo/branches/branch2
>> >> repo/branches/work/developer1/branch3
>> >> repo/branches/work/developer1/branch4
>> >> repo/branches/work/developer2/branch5
>> >
>> > see my post at
>> > http://www.cafu.de/forum/viewtopic.php?f=14&t=1092
>> > heading "Branches outside branches/".
>> >
>> > You may need something like
>> > git config --add svn-remote.svn.fetch
>> > "path.../branchX:refs/remotes/branchX"
>> > for each of your branches.
>>
>> that works :)
>>
>> Although not an ideal solution - I have to manually configure all
>> branches + update them as they are created
>
> It's not a 100% solution, but you can use a limited glob-like syntax in the branches and tags lines of the svn-remote config block. You still need to do some manual work (one entry for each developer), but the wildcards eliminate a lot of the grunt work as individual branches are created. See the very end of the git-svn manpage for examples (section titled CONFIGURATION). I use that technique to track a subdirectory of the Slimdevices SVN repo [1], which has a similarly complex layout:
>
> repo/7.1/trunk
> repo/7.1/branches/branchA
> repo/7.1/branches/branchB
> repo/7.1/tags/tag1
> repo/7.2/trunk
> repo/7.2/branches/branchC
Do you mean something like
branches = branches/work/*/*:refs/remotes/work/*
branches = branches/{branch1,branch2}:refs/remotes/branches/*
instead of (currently used)
branches = branches/work/*/*:refs/remotes/work/*
fetch = branches/branch1:refs/remotes/branches/branch1
fetch = branches/branch2:refs/remotes/branches/branch2
I will try that tomorrow.
BTW what's the difference between "fetch" and "branches" keys? I could
only find one: "fetch" does not support glob arguments and "branches"
do.
--
Piotr Krukowiecki
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: git-svn with non-standard repository layout
2012-12-05 22:19 ` Piotr Krukowiecki
@ 2012-12-05 23:54 ` Stephen Bash
2012-12-11 15:46 ` Piotr Krukowiecki
0 siblings, 1 reply; 6+ messages in thread
From: Stephen Bash @ 2012-12-05 23:54 UTC (permalink / raw)
To: Piotr Krukowiecki; +Cc: Git Mailing List, Carsten Fuchs
----- Original Message -----
> From: "Piotr Krukowiecki" <piotr.krukowiecki@gmail.com>
> Sent: Wednesday, December 5, 2012 5:19:44 PM
> Subject: Re: git-svn with non-standard repository layout
>
> Do you mean something like
>
> branches = branches/work/*/*:refs/remotes/work/*
> branches = branches/{branch1,branch2}:refs/remotes/branches/*
>
> instead of (currently used)
>
> branches = branches/work/*/*:refs/remotes/work/*
> fetch = branches/branch1:refs/remotes/branches/branch1
> fetch = branches/branch2:refs/remotes/branches/branch2
Essentially yes. But I guess since you have branches at the same level as the work directory, you either have to add to the glob for each new branch or add another fetch line... Doesn't seem like a big win to me. Jumping on a tangent, I thought there could only be one wildcard on the left side of the ':' (and the '*' on the right). If your work/*/* is actually working, that's quite interesting.
> BTW what's the difference between "fetch" and "branches" keys? I could
> only find one: "fetch" does not support glob arguments and "branches"
> do.
That's the only difference I've discovered, though someone more familiar with the code might be able to say more.
Here's my config for the Slimdevices repo I mentioned:
[svn-remote "svn"]
url = http://svn.slimdevices.com/repos/slim
fetch = trunk/server:refs/remotes/trunk
fetch = 7.5/trunk/server:refs/remotes/7.5/trunk
fetch = 7.6/trunk/server:refs/remotes/7.6/trunk
fetch = 7.7/trunk/server:refs/remotes/7.7/trunk
fetch = 7.8/trunk/server:refs/remotes/7.8/trunk
branches = branches/*/server:refs/remotes/pre7/*
branches = 7.5/branches/*/server:refs/remotes/7.5/*
branches = 7.6/branches/*/server:refs/remotes/7.6/*
branches = 7.7/branches/*/server:refs/remotes/7.7/*
branches = 7.8/branches/*/server:refs/remotes/7.8/*
tags = 7.5/tags/*/server:refs/remotes/7.5/tags/*
tags = 7.6/tags/*/server:refs/remotes/7.6/tags/*
tags = 7.7/tags/*/server:refs/remotes/7.7/tags/*
tags = 7.8/tags/*/server:refs/remotes/7.8/tags/*
Lots of repetition, but now that I look at it this repo doesn't have the branches/work clash yours does, which simplifies the config.
HTH,
Stephen
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: git-svn with non-standard repository layout
2012-12-05 23:54 ` Stephen Bash
@ 2012-12-11 15:46 ` Piotr Krukowiecki
0 siblings, 0 replies; 6+ messages in thread
From: Piotr Krukowiecki @ 2012-12-11 15:46 UTC (permalink / raw)
To: Stephen Bash; +Cc: Git Mailing List, Carsten Fuchs
On Thu, Dec 6, 2012 at 12:54 AM, Stephen Bash <bash@genarts.com> wrote:
> ----- Original Message -----
>> From: "Piotr Krukowiecki" <piotr.krukowiecki@gmail.com>
>> Sent: Wednesday, December 5, 2012 5:19:44 PM
>> Subject: Re: git-svn with non-standard repository layout
>>
>> Do you mean something like
>>
>> branches = branches/work/*/*:refs/remotes/work/*
>> branches = branches/{branch1,branch2}:refs/remotes/branches/*
>>
>> instead of (currently used)
>>
>> branches = branches/work/*/*:refs/remotes/work/*
>> fetch = branches/branch1:refs/remotes/branches/branch1
>> fetch = branches/branch2:refs/remotes/branches/branch2
>
> Essentially yes. But I guess since you have branches at the same level as the work directory,
> you either have to add to the glob for each new branch or add another fetch line... Doesn't seem
> like a big win to me. Jumping on a tangent, I thought there could only be one wildcard on the
> left side of the ':' (and the '*' on the right). If your work/*/* is actually working, that's quite interesting.
At first I though it was working, but it seems it does not. I have
several branches, including:
remotes/trunk
remotes/work/user/xxx (based on remotes/trunk)
master (based on remotes/trunk)
xxx (based on remotes/work/user/xxx)
If I do 'git svn rebase -l' on xxx, it rebases commits on xxx (i.e.
remotes/trunk..remotes/work/user/xxx)
on top of master, so now xxx is based on master :(
I don't know if this is git-svn bug, or the problem with 'work/*/*'
pattern, or something else...
I will try explicit branches specification and will see what happens.
--
Piotr Krukowiecki
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2012-12-11 15:55 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-12-04 17:29 git-svn with non-standard repository layout Piotr Krukowiecki
[not found] ` <50BE68C9.7070100@cafu.de>
2012-12-05 16:26 ` Piotr Krukowiecki
2012-12-05 16:44 ` Stephen Bash
2012-12-05 22:19 ` Piotr Krukowiecki
2012-12-05 23:54 ` Stephen Bash
2012-12-11 15:46 ` Piotr Krukowiecki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).