The Hackerlab at `regexps.com`

## arch Project Trees

up: arch next: arch Project Inventories prev: arch Commands in General

One of the central organizing concepts of `arch` is the project tree . For the most part, a project tree is an ordinary tree of files, directories and symbolic links -- all files that you create and maintain as part of your project.

In addition to the tree content you create, `arch` itself maintains some control files in a project tree. You should regard these extra control files as part of your project's content. For example, if you distribute source for a program managed by `arch` , you will ordinarilly want to include the control files: they are useful to other people.

- Initializing a Project Tree
- Finding the Root of a Project Tree

### Initializing a Project Tree

up: arch Project Trees next: Finding the Root of a Project Tree

To initialize a project tree for the first time, from the root of the tree, use the command:

            % larch init-tree

For example, here is how I initialized the project tree containing the source for `arch` itself:

            % cd ~/wd/arch
            % larch init-tree

That will create a subdirectory, at the root of the tree, called `{arch}` . Most `arch` control files are stored in the tree rooted at `{arch}` : you should never create, remove, or modify files there by hand.

When you have multiple project trees for related projects it is good practice to make them sibling directories. This is because `arch` sometimes caches information in project trees and those caches can speed up some operations. When looking for information in a cache, `arch` looks not only in the current project tree, but in any sibling project trees. For example, while working on `arch` , I might have several copies of `arch` , each for working on a different set of features:

            % cd ~/wd
            % ls
            arch    arch-branches   arch-inventory   arch-reporting

In this manual, `~/wd` always refers to a "directory of project trees". (The convention means the same thing as, but is less cumbersome than `${PROJECT_TREES}` -- there is no requirement that your directory of project trees be called `~/wd` , or that you only have one such directory.)

### Finding the Root of a Project Tree

up: arch Project Trees prev: Initializing a Project Tree

From any directory within a project tree, the command:

            % larch tree-root

prints the full path name of the root of the project tree:

            % cd ~/wd/arch/src
            % larch tree-root
            /home/lord/wd/arch

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