From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4329 invoked by alias); 22 Mar 2007 15:28:03 -0000 Received: (qmail 4070 invoked by uid 22791); 22 Mar 2007 15:28:01 -0000 X-Spam-Check-By: sourceware.org Received: from return.false.org (HELO return.false.org) (66.207.162.98) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 22 Mar 2007 15:27:53 +0000 Received: from return.false.org (localhost [127.0.0.1]) by return.false.org (Postfix) with ESMTP id 1B9B54B267 for ; Thu, 22 Mar 2007 10:27:52 -0500 (CDT) Received: from caradoc.them.org (dsl093-172-095.pit1.dsl.speakeasy.net [66.93.172.95]) by return.false.org (Postfix) with ESMTP id D143A4B262 for ; Thu, 22 Mar 2007 10:27:51 -0500 (CDT) Received: from drow by caradoc.them.org with local (Exim 4.63) (envelope-from ) id 1HUPCh-0001c0-Gh for binutils@sourceware.org; Thu, 22 Mar 2007 11:27:51 -0400 Date: Thu, 22 Mar 2007 15:28:00 -0000 From: Daniel Jacobowitz To: binutils@sourceware.org Subject: Re: SVN for src (was Re: Binutils 2.18 prep) Message-ID: <20070322152751.GA5538@caradoc.them.org> Mail-Followup-To: binutils@sourceware.org References: <46025531.90105@st.com> <20070322150018.GA4566@caradoc.them.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20070322150018.GA4566@caradoc.them.org> User-Agent: Mutt/1.5.14+cvs20070313 (2007-03-13) X-IsSubscribed: yes Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org X-SW-Source: 2007-03/txt/msg00304.txt.bz2 On Thu, Mar 22, 2007 at 11:00:18AM -0400, Daniel Jacobowitz wrote: > On Thu, Mar 22, 2007 at 10:06:41AM +0000, Andrew STUBBS wrote: > > We create an Subversion directory containing all the top-level files (configure > > etc.), but with all the subdirectories (gas, gdb etc.) present but *empty*. We > > then provide a script that does 'svn switch' on each directory required for a > > given 'module'. This is the inverse of the svn://gcc.gnu.org/svn/gcc/emptydir > > idea (see http://gcc.gnu.org/wiki/SvnSetup "Optimize disk usage"). > > You know, I think we can do this even without having to butcher the > layout of the repository. Check out a directory containing just the > script, and have it use "svn switch -N" at the end to pick up the top > level files. > > I'm going to experiment. I have a handy repository to work with :-) > (We import CVS snapshots into svn.) Here's what I've got so far. These are all just my observations, so my assertions about how Subversion works may be bogus. Suppose we leave the repository layout exactly the same as it is now. Check out the trunk using "svn co -N" for non-recursive. You will get only the trunk - no subdirectories. Unlike in CVS they will never spontaneously appear after this point; "svn up" will only create new directories when it updates through a revision in the repository that created the directory. Otherwise, it appears to assume that the directory is deliberately missing if it is not mentioned in .svn/entries. However, an explicit "svn up gdb" in this case will work! So, we can put a script in the top level to check out a module. If you check out the repository URL you'll get all of src; if you check out using -N and run the script with appropriate argument, you'll get only binutils. Or only GDB, et cetera. We'll probably need to maintain a list of subdirectories for anything where directories are omitted from some modules; that's top level, gdb and gdb/testsuite/ (for Insight), and cgen. It'll be a hassle but not a huge hassle. Not everything is rosy. "svn cp . $repo/branches/new-branch" will copy the omitted directories, which is peculiar, so we would either need people branching to get a hypothetical svn which didn't do that or use a script to create branches. But it's much less messy than using externals would be. Any thoughts? Is this really workable? -- Daniel Jacobowitz CodeSourcery