This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

SVN for src (was Re: Binutils 2.18 prep)


Daniel Jacobowitz wrote:
I expect to create the branch within a couple of weeks.  I'd like to
keep the branch-to-release interval fairly short; I've been using
better revision control systems than CVS lately, and they've left me
very bitter about having to merge patches to a CVS branch.  Volunteers
to find a workable way to use SVN for src instead are highly welcomed
as far as I'm concerned.

My understanding is that the problem is the lack of Subversion support for something like CVS modules.


I have been thinking about this problem recently. Obviously the best solution is native support from Subversion, but in it's absence I have come up with an alternative. Sorry if I've just re-invented a well known solution, but here goes:

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").

The repository might look like:

trunk/
  src/
    configure
    Makefile.in
    ...
    binutils/
    gas/
    gdb/
    ...
    switch-modules.sh
  modules/
    binutils/
      ar.c
      ...
    gas/
      as.c
      ...
    gdb/
      gdb.c
      ...
    ...

So you have a two-step checkout procedure:

  svn checkout svn:://sourceware.org/svn/trunk/src
  cd src
  ./switch-modules.sh binutils

The script would then do:

  svn switch svn://sourceware.org/svn/trunk/modules/binutils binutils
  svn switch svn://sourceware.org/svn/trunk/modules/gas gas
  svn switch svn://sourceware.org/svn/trunk/modules/include include
  ...

This is not an ideal solution - it requires two steps, 'svn status' will always list all the switches, and it does not provide fine grained control over the contents of each directory. However, it does solve the problem of enormous working trees.

Just a thought

Andrew


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]