
	     arch: the World Wide Revision Control System

arch is a revision control system with features that are ideal for
free software and open source projects characterized by widely
distributed development, concurrent support of multiple releases, and
substantial amounts of development on branches.  It is intended to
replace CVS and corrects many mis-features of that system.

Some quick highlights of the feature list are:

	+ distributed databases -- each hacker or group can host their
	  own branches.  There's a global (world wide) name-space for
	  lines of development and revisions.  Branches can be formed
	  from any repository to any other and merge operations can 
	  span repository boundaries without needing to actually
	  duplicate the full contents of a repository at each site.
	  
	+ fancy merging -- `arch' has support for various styles
	  of history-sensitive branch merging.  The way branches
	  and patch-sets interact with distributed repositories
	  makes it practical to distribute the responsibilities
	  for patch-review and merging.

	+ renames handled -- of course file and directory renames
	  are handled accurately.  So are symbolic links and file
	  permissions.

	+ unobtrusive operation -- `arch' is designed to stay out
	  your way while making changes and rearranging files.  It 
	  is designed to have a clean and self-documenting
	  command-line interface having the finest characteristics of
	  good Unix tools.

	+ web interface -- `arch' includes web tools for browsing past
	  revisions.

	+ revision library -- `arch' includes tools for building a 
	  space efficient library of all past revisions, represented
	  as ordinary file system trees.

	+ very fast -- when configured correctly, `arch' is quite fast.


`arch' is, at its core, a collection of shell scripts and a tiny bit
of new C code.  It brings many classic shell-utils, FTP, diff, and
patch together and turns them into a distributed version control
system.  In spite of the simplicity, `arch' is not a toy: its quite
sophisticated and, in my opinion, elegant.  It captures the style of
diff/patch use that we used to use before remote-CVS took over the
world, fills in some gaps, and packages the whole deal behind a nice
(command line) user interface.  Competing RC systems are far more
complex than they need to be while still failing to provide some of
the nice features found only in `arch'.

Arch is distributed from:

	http://www.regexps.com


* INSTALLATION INSTRUCTIONS

  For help installing arch, see "=INSTALL".  



* SYSTEM SHELLS

  On Solaris, some report, "/bin/sh" doesn't understand shell
  expansions of the form:

	${var#prefix}

  On NetBSD, I've had a report that "/bin/sh" doesn't allow 
  symbolic signal names as the second argument to "trap".

  Both of those are deviations from the Posix standard for which there
  is no particular nice and/or particularly portable work-around.
  Therefore, you'll have to ask arch to use a different shell on such
  systems.  There are several free, portable Posix shells available.

  You can use a different shell by setting the configure option
  "posix-shell".  See:

	% src/configure --help

  and 

	% src/configure --help-options


* SORT

Some users report that textutils 2.0.11 is shipped with RedHat 7.2
and also (with the "-m" option) setfaults when given an empty file.
If you are using that version of sort, you will have to upgrade to a
more recent version.  Reports are that a new version is available
in:

	ftp.redhat.com/pub/redhat/linux/rawhide/i386/RedHat/RPMS/textutils-2.0.21-1.i386.rpm


* PATCH

Some users report that older versions of GNU patch do not understand
the "--posix" option, but that versions after 2.5.4 do.  Be sure that
your version of GNU patch supports that option.



Have fun,
Tom Lord

Report bugs, ask for help, offer money, or volunteer to help by
writing "lord@regexps.com".




# "Hey, what's this thing?"
# 
# tag: Tom Lord Wed Jan  9 08:10:28 2002 (arch/=README)
#
