The Hackerlab at regexps.com

Multi-Tree Projects

up: arch

Large projects are often most naturally divided into a number of independently maintained sub-projects. For example, arch itself consists of six separate projects:

        ./src
                A generic top-level source file for combining
                projects.

        ./src/arch
                arch itself.  That is, the `arch' command and all of
                the shell scripts that implement it.

        ./src/file-utils
                Generic utilities for operating on files and
                directories.

        ./src/ftp-utils
                A scriptable FTP client.

        ./src/hackerlab
                The hackerlab C library.

        ./src/text-utils
                Generic utilities for operating on text files.

In an arch source tree, each of those sub-directories is a separate project tree (each has its own {arch} subdirectory; each was initialized by the command larch init-tree ; each is in a separate category in the repository).

To put all the pieces together, use the arch configuration commands :

(TO BE DOCUMENTED:)

Config file format, e.g.:

    ./configs/regexps.com/devo.arch:

    # 
    # Check out an arch distribution from the devo branches.  
    # Latest revisions.
    #

    ./src                   lord@regexps.com--2002/package-framework--devo
    ./src/arch              lord@regexps.com--2002/arch--devo
    ./src/file-utils        lord@regexps.com--2002/file-utils--devo
    ./src/ftp-utils         lord@regexps.com--2002/ftp-utils--devo
    ./src/hackerlab         lord@regexps.com--2002/hackerlab--devo
    ./src/shell-utils       lord@regexps.com--2002/shell-utils--devo
    ./src/text-utils        lord@regexps.com--2002/text-utils--devo

and

  % larch build-config --help
  instantiate a multi-project tree
  usage: build-config [options] config-name

   -V --version                  print version info
   -h --help                     display help

   --silent                      no output (except odd errors)
   --quiet                       brief output
   --report                      default output
   --verbose                     maximal output
   --debug                       debugging output
   -d --dir DIR                  cd to DIR first

  Build the named configuration based on the specification
  in the "configs" subdirectory at the root of the project
  tree.

and

  % larch update-config --help 

  update a multi-project tree
  usage: update-config [options] config-name

   -V --version                  print version info
   -h --help                     display help

   --silent                      no output (except odd errors)
   --quiet                       brief output
   --report                      default output
   --verbose                     maximal output
   --debug                       debugging output

   -d --dir DIR                  cd to DIR first

   --force                       pass the --force flag to update

  Update the named configuration based on the specification
  in the "configs" subdirectory at the root of the project
  tree.

and

    % larch replay-config --help

    replay a multi-project tree
    usage: replay-config [options] config-name

     -V --version                  print version info
     -h --help                     display help

     --silent                      no output (except odd errors)
     --quiet                       brief output
     --report                      default output
     --verbose                     maximal output
     --debug                       debugging output

     -d --dir DIR                  cd to DIR first

    Update the named configuration based on the specification
    in the "configs" subdirectory at the root of the project
    tree.

and

    % larch record-config --help

    record a revision-specific configuration
    usage: record-config [options] config-name new-config-name

     -V --version                  print version info
     -h --help                     display help

     --silent                      no output (except odd errors)
     --quiet                       brief output
     --report                      default output
     --verbose                     maximal output
     --debug                       debugging output

     -d --dir DIR                  cd to DIR first

     -f --force                    overwrite an existing config

    Update the named configuration based on the specification
    in the "configs" subdirectory at the root of the project
    tree.

and

    % larch show-config --help

    show the revision frontier of a configuration
    usage: show-config [options] config-name

     -V --version                  print version info
     -h --help                     display help

     --silent                      no output (except odd errors)
     --quiet                       brief output
     --report                      default output
     --verbose                     maximal output
     --debug                       debugging output

     -d --dir DIR                  cd to DIR first

    Print the revision frontier specified by the named configuration
    in the "configs" subdirectory at the root of the project
    tree.

arch: The arch Revision Control System
The Hackerlab at regexps.com