On Oct 12, 2009, Jason Merrill <ja...@redhat.com> wrote: > On 10/12/2009 05:17 PM, Andrew Pinski wrote: >> That seems like a huge bug in git-svn because we already use multiple >> directory levels under branches. Hint ibm and redhat and debain.
> Yep, that's why I said "expand". I've thought about fixing that > aspect of git-svn, but I'm not sure how it would tell the difference > between a branch directory and a directory of branches given that SVN > basically models a filesystem. I don't think it can tell the difference. AFAICT, we have to tell it ourselves. For the past several weeks, I've been working on creating another git repository to address this, using the following configuration file: [core] repositoryformatversion = 0 filemode = true bare = true logallrefupdates = true [svn-remote "svn"] rewriteRoot = svn+ssh://gcc.gnu.org/svn/gcc # url = svn+ssh://aol...@gcc.gnu.org./svn/gcc url = file:///l/tmp/build/gcc/gccrepo fetch = trunk:refs/remotes/trunk branches = branches/ARM/*:refs/remotes/branches/ARM/* fetch = branches/ARM:refs/remotes/dirs/branches/ARM branches = branches/apple/*:refs/remotes/branches/apple/* fetch = branches/apple:refs/remotes/dirs/branches/apple branches = branches/csl/*:refs/remotes/branches/csl/* fetch = branches/csl:refs/remotes/dirs/branches/csl branches = branches/dead/*:refs/remotes/branches/dead/* fetch = branches/dead:refs/remotes/dirs/branches/dead branches = branches/gcj/*:refs/remotes/branches/gcj/* fetch = branches/gcj:refs/remotes/dirs/branches/gcj branches = branches/ibm/*:refs/remotes/branches/ibm/* fetch = branches/ibm:refs/remotes/dirs/branches/ibm branches = branches/ix86/*:refs/remotes/branches/ix86/* fetch = branches/ix86:refs/remotes/dirs/branches/ix86 branches = branches/redhat/*:refs/remotes/branches/redhat/* fetch = branches/redhat:refs/remotes/dirs/branches/redhat branches = branches/st/*:refs/remotes/branches/st/* fetch = branches/st:refs/remotes/dirs/branches/st branches = branches/suse/*:refs/remotes/branches/suse/* fetch = branches/suse:refs/remotes/dirs/branches/suse branches = branches/ubuntu/*:refs/remotes/barnches/ubuntu/* fetch = branches/ubuntu:refs/remotes/dirs/branches/ubuntu branches = branches/*:refs/remotes/branches/* fetch = branches:refs/remotes/dirs/branches/root tags = tags/apple/*:refs/remotes/tags/apple/* fetch = tags/apple:refs/remotes/tags/dirs/apple tags = tags/csl/arm/*:refs/remotes/tags/csl/arm/* fetch = tags/csl/arm:refs/remotes/tags/dirs/csl/arm tags = tags/csl/coldfire/*:refs/remotes/tags/csl/coldfire/* fetch = tags/csl/coldfire:refs/remotes/tags/dirs/csl/coldfire tags = tags/csl/morpho/*:refs/remotes/tags/csl/morpho/* fetch = tags/csl/morpho:refs/remotes/tags/dirs/csl/morpho tags = tags/csl/renesas/*:refs/remotes/tags/csl/renesas/* fetch = tags/csl/renesas:refs/remotes/tags/dirs/csl/renesas tags = tags/csl/sourcerygxx/*:refs/remotes/tags/csl/sourcerygxx/* fetch = tags/csl/sourcerygxx:refs/remotes/tags/dirs/csl/sourcerygxx tags = tags/csl/wrs-linux/*:refs/remotes/tags/csl/wrs-linux/* fetch = tags/csl/wrs-linux:refs/remotes/tags/dirs/csl/wrs-linux tags = tags/csl/*:refs/remotes/tags/csl/others/* fetch = tags/csl:refs/remotes/tags/dirs/csl/root tags = tags/ix86/*:refs/remotes/tags/ix86/* fetch = tags/ix86:refs/remotes/tags/dirs/ix86 tags = branches/st/tags/*:refs/remotes/tags/st/* fetch = branches/st/tags:refs/remotes/tags/dirs/st tags = tags/redhat/*:refs/remotes/tags/redhat/* fetch = tags/redhat:refs/remotes/tags/dirs/redhat tags = tags/ubuntu/*:refs/remotes/tags/ubuntu/* fetch = tags/ubuntu:refs/remotes/tags/dirs/ubuntu tags = tags/*:refs/remotes/tags/* fetch = tags:refs/remotes/tags/dirs/root fetch = :refs/remotes/dirs/root This preserves the complete svn history, although at times in a somewhat convoluted way. Because git-svn refuses to treat say branches/redhat as a branch if branches/redhat/gcc-4_4-branch exists, and vice-versa, I keep track of directories that do not correspond to a branch or tag of the entire tree in directories that contain “dirs” as one of the pathname components. I wish the GCC git repository could integrate at least some of these fetch configurations, so that branches in subdirs can be handled as proper branches. All this said, unless we want to expand on the need for ugly git-svn configurations as above, we'd be better off avoiding more sub-dirs. The alternative would have been to adopt a uniform depth for all branches and tags, but it's too late for that now. -- Alexandre Oliva, freedom fighter http://FSFLA.org/~lxoliva/ You must be the change you wish to see in the world. -- Gandhi Be Free! -- http://FSFLA.org/ FSF Latin America board member Free Software Evangelist Red Hat Brazil Compiler Engineer