! 		ArX Release News

ArX-2.2.3 2005-July-21

"annotate" has been implemented and "log" has been enhanced.

The patch queue has been updated and tests modified to work with ArX.

"fork", "replay", and "merge" no longer supports out-of-place forks.

"arx help" now works.

The autoconf scripts for Python configuration have been revamped to
use a standard autoconf macro.  See INSTALL.GENERIC for details.

Revision libraries and "library" have been removed.

Some limitations in "merge", "diff" and "replay" have been removed.


ArX-2.2.2 2005-Apr-30

The licensing problems with the Boost libraries have been fixed, and
binaries packages of ArX are now available.

"tag" has been enhanced so that you can tag the latest revision of a
particular branch (floating tags), instead of just one particular
revision.

"merge" now has a --recursive option.

"fork" has been simplified and works in-place by default.

"export" no longer appends the revision number to the destination if
the destination is specified.

Some bugs in plain old http support have been fixed.  In addition,
"update-listing" works differently.  You can use update-listing to
either add or remove a special marker in an archive.  If that marker
is in the archive, then ArX will automatically maintain all of the
.listing files in that archive.

In "diff", --output now implies --keep-patch-dir.

A subtle off-by-one bug in the xdelta implementation has been fixed
(thanks to Daniel Berlin).

"make clean" and "make distclean" now work.

The manual has seen a number of improvements.

ArX-2.2.1 2005-Mar-6

This is a security fix release bundled with a few new features.  The
security issue arises from insecure path handling when building
configurations.  It has been fixed by removing the configuration
mechanism and enhancing the capabilities of "tag" so that it can take
its place.

"tag" now creates a revision that is just a symbolic name, as opposed
to a true revision.  It should also run much more quickly, since it no
longer has to create a tree.  Finally, it can represent a collection
of different projects in one tree, much like a configuration.

"diff" now has a --recursive option.

gpg is now much less chatty.

"make-dist" has been renamed to "export", and by default makes a
project tree, not a tarball.

"init-tree" has been renamed to "init".

The syntax for "merge" and "replay" have been cleaned up significantly.

"patch-report" now can directly inspect patches in the archive as well
as tarballs.

A bug where permissions for the public key list in the archive were
not set properly has been fixed.

A bug where environment variables for hooks were not properly set has
been fixed.


ArX-2.2.0 2005-Jan-23

This is an unstable release.

The way that archive registration is handled has changed, and you must
reregister all of your archives.  Please note the new mirroring
semantics.  You must also run "arx make-archive" on mirrors again.

ArX now features cryptographic signatures.

There is now embryonic support for Windows under cygwin.  See
INSTALL.CYGWIN for details.

ArX now runs under OS X, using either pkgsrc or fink to supply the
necessary dependencies.

ArX now makes it easy to publish archives to plain http servers.
Using a new "update-listing" function along with a hook, listing files
will be updated automatically.

"register-archive" has been folded into "archives".

"merge" and "replay" now have a --delete-removed option.

Mirroring has changed significantly.  An archive and its mirrors all
use the same name, and the syntax for "mirror" and "make-archive
--mirror" has changed.

The initial configure step will now error out if it can not find a
required program.

ArX now uses boost-1.32.0.


ArX-2.1.1 2004-Nov-21

This is an unstable release.

This release cleans up several problems associated with remote
archives.  Latency problems when getting revisions are much
improved, and the spurious warnings when accessing an archive over
WebDAV are now suppressed.  The warnings are still available with the
--verbose option.

Adding revisions with "archive-cache -a" was broken in the previous
release and now works again.

Some corner case problems with no-edit trees are fixed.

ArX now uses the standard gnome url escaping, rather than its own.

An error message for register-archive is improved.

The --cache argument was removed from tag since it did not do anything anyway.


ArX-2.1.0 2004-Nov-7

This is an unstable release.

The minor version number has been increased.  Some optimizations were
made to speed up "diff" for large trees which invalidated current
project trees.  In addition, some optimizations were made to how
archive caches are stored.  This means that you will have to delete
all of your current trees and revision library and re-get them.  In
addition, you will have to delete your old archive caches with the
older version of ArX (2.0.0), and repopulate them with this version.

There is a new mode of operation tailored for extremely large trees.
ArX should now be as fast as anything else for most local operations.
It is described in a new section in the documentation "Working with
Large Trees".

Getting a revision by applying patches is much, much faster now
because ArX takes advantage of the guaranteed lack of conflicts.
Because of that, ArX will now automatically build a revision if it is
needed for "diff" and "file-undo".

An xdelta implementation from monotone has been included for efficient
binary deltas.

The variables ARX_TREEROOT, ARX_PREVIOUS_ARCHIVE, ARX_PREVIOUS_BRANCH,
and ARX_PREVIOUS_REVISION are now set when invoking hooks.  This makes
it easy to run checks on the tree before committing and have a more
intelligent archiving strategy.

You no longer need the --paths option to commit, diff, undo, and mkpatch.

The documentation and help screen has been cleaned up, and the short
options have been regularized.

A bug in how patch conflicts are handled is fixed.

"mirror" now allows you to mirror just patches, cached revisions,
readmes, or any combination.

The my-* commands have all been coalesced into a single "param" command.

"file-diff" now has the option to use a gui diff tool.

"revisions", "changelog", and "log" have all been coalesced into "log".

"library-revisions" and "library-browse" have been combined into "library".

"merge" now updates the tree-cache if used like an update.

A bug in "make-dist" when computing the destination file is fixed.

The --dir option to archive-cache actually works now.


ArX-2.0.0 2004-Oct-6

This version marks a major incompatilibity.  There is a
dump_restore.py script in tools/ that will convert archives.

ArX is now almost completely internationalized.  This means that you
can use almost any character for file names, branches, and revisions.
The only thing that will cause trouble is embedded nulls.  This
accompanied extensive changes in the archive and local tree formats.

However, ArX is not yet localized, so error messages etc. will not be
output in the user's local language.

The format for specifying branches and revisions has changed.  The
separator for branches is a period ".", and the separator for
revisions is a comma ",".  In addition, you can have branches to any
depth, such as

  hello,0
  hello.main,0
  hello.main.foo.1.0,0

Almost all instances of "arch" have been changed to "arx".  For
example, the {arch} directory has been renamed to _arx, and
.arch-params has moved to .arx.

ArX now uses cryptographic hashes (SHA-256) to ensure data integrity.
It does not yet support cryptographic signatures, although that is
planned for a release soon.

The "naming", "internal" and "internal_deprecated" inventory methods
have been removed.  There is now only the "external" inventory method.
In line with that, "tagging-method" has been replaced with "ignore".

The "external" inventory method no longer uses .arch-ids directories,
instead storing everything in {arx}/++manifest and {arx}/++changes.

Permissions are no longer directly versioned.  Rather, you can set
arbitrary properties on paths.  See "arx property -H" for details.

The emacs mode autocompletion of branches and revisions no longer works.

A new version of boost has been included.

ArX should now build on NetBSD (thanks to Marc Recht).

tree-lint now checks the entire project tree, not just the current directory.

ArX no longer makes logs.  The generic method for specifying commit
comments is with the -s option to commit.  To that end, "make-log" and
"my-editor" have been removed, and init-tree and fork will call up an
editor anymore.

The inventory types have been reduced to source, ignored,
unrecognized, and control.  control is everything in the {arx}
directory.  Files starting with ",," are ignore, and more can be added
by the user.

"file-diffs" has been renamed to "file-diff", "move" has been renamed
to "mv", delete has been renamed to "rm", and "patch-log" has been
renamed to "log".

"make-dist" now will use the latest revision from the current project
tree if none is specified.  "make-dist" also properly handles relative
directory targets now.

A bug in "replay" where it was automatically crossing continuation
revisions was fixed.

A number of bugs in library-revisions that prevented a large number of
cases from working has been fixed.

You can now specify an archive location directly, instead of
registering an archive and then using the name.  This allows, for
example, a single command to get a revision.



ArX-1.0.20 2004-Apr-22

This is a brown-paper-bag release that fixes a bug in "tag" in the
previous release.  It caused the associated new patch log to not show
up.

Also, the python bindings were broken, and the html documentation was
out of date.  These bugs have now been fixed.

In addition, there are a number of unrelated improvements.

"whats-missing" has been renamed to "missing".

"update-distributions" has been renamed to "make-dist"

The various *-config commands have been collapsed into the single
command "config".

"reconcile" has been removed.  The intelligence in "merge" makes it obsolete.

"cat-library-file" and "library-find" have been replaced by file-orig.

"touched-files-prereqs" has been removed.

"patch-set-web" has been removed.

Finally, this release marks the complete rewrite of the program into
C++.



ArX-1.0.19 2004-Apr-19

This is an security release bundled with a whole lot of new features.
The version of libneon bundled with ArX has a format string
vulnerability.  That has been fixed by completely replacing all
networking functionality with gnome-vfs.  So hackerlab, file-utils,
and ftp-utils are no longer part of ArX.

The archive format has been slightly changed.  If you have any
mirrors, you will have to unregister them, and then make them with
make-archive --mirror.  This can be done in-place with no ill effects.

"commit" has been rewritten in C++, speeding it up considerably.  In
the course of this, there have been some minor changes to the log
formats.  In particular, control files longer show up in
the log files (though they are still in the patch).  Also, new
projects created with the new "commit" can not be retrieved by old
clients unless there are cached revisions.

"star-merge" and "update" have been folded into a new command "merge".
"replay" has been reimplemented, and has a slightly different syntax.
When doing an in-place update, ArX no longer saves a copy of the
directory in ++saves-...  Also, "merge" is much more intelligent
about finding common ancestors.

"create-branch" has been renamed to "fork".  The functionality of
"create-version" has been replaced with "init-tree" and "fork".

"delete-branch" and "delete-category" have been reimplemented in
C++.

"tag" is reimplemented in C++, and a bug when tagging a base revision
is fixed.

A bug in "tree-version" was fixed, where it was not including the
archive when setting a project tree's default version.

"what-changed" has been changed to "diff", and no longer by default
prints out what changes occured to control files.

"join-branch" has been removed.  Use "replay" on the continuation
revision instead.

The functionality in "remove-history" and "make-sync-tree" has been
folded into "history".

The functionality in "whereis-archive" has been folded into "archives".

"config-history" and "cat-library-file" are temporarily broken.



ArX-1.0.18 2004-Feb-29

This is an experimental release.  This release depends on gnome-vfs2,
so the old, simple way of installing no longer works.  See INSTALL for
details.

"get" has been rewritten in C++, and is more intelligent about
constructing revisions, resulting in outstanding speed increases in
some cases.

A bug in make-archive such that it didn't create the name of the
archive correctly has been fixed.

The generic --debug option has been removed.  Use --verbose instead.

Many commands have been collapsed into single commands.  "categories",
"branches", "versions", "category-readme", "branch-readme", and
"version-readme" have been replaced by "browse".
"archive-cache-revision", "archive-cached-revisions", and
"archive-uncache-revision" have been replaced with "archive-cache".
"pristines", "delete-pristines", and "add-pristines" have been
replaced with "tree-cache".  "library-add" and "library-remove" have
been rolled into "library-revisions".  "library-archives",
"library-categories", "library-branches" and "library-versions" have
been replaced with "library-browse".  Finally, "cat-archive-log"'s
functionality has been folded into "revisions".

"revisions", "library-revisions", "my-revision-library", and
"get-patch" have all been reimplemented in C++.

The internal structure of libraries has been changed.  They no longer
contain patch-logs and index files.  "library-log", "library-find" and
"library-file" have also been removed.

The undocumented function "make-library-browser" has been removed.

---------------------------------------------------------------------

ArX-1.0.17 2003-Dec-19

This is an unstable release.

The new documentation is more or less complete, so the non-free
documentation has been removed.

There is now a _rough_ Python interface to ArX.  The check_moved.py
script in tools/ has been modified to use it, and it now works.

A patch queue manager, tla-pqm, has been ported to ArX and is included
in the tools/ directory.

what-changed now takes the --paths option, which required a slight
change to the syntax and an update to the emacs mode.  commit and undo
also have this new syntax.  commit also takes the -s option, as a
shortcut instead of writing a log file.

delete and move now allow you to only delete or move the tag, and not
the file and the tag.

The error messages are a little cleaned up, along with other minor
cleanups and bug fixes.

The tarballs created by update-distributions now makes 1.0.17 tarballs
for most cases, instead of 1.0pre17.

ArX-1.0pre16 2003-Nov-24

This is an unstable release.

An install bug that can cause data loss has been fixed.  Also, a bug
where mkpatch --paths was being too picky is also fixed.  The new
documentation has been substantially improved, and what-changed and
patch-report have both been reimplemented in C++.  what-changed has
been enhanced a little, requiring updates to the emacs mode.


ArX-1.0pre15 2003-Nov-17

This is an unstable release.

An off-by-one bug was fixed that broke undo, file-undo, and
file-diffs, plus a few smaller bugs.  Pre and post hooks have now been
implemented.  The new documentation describes how they work.  Finally,
make-log and log-ls have been reimplemented in C++, and have slightly
different semantics.  That necessitated an update to the emacs-mode.


ArX-1.0pre14 2003-Nov-11

This is an unstable release.

mkpatch, commit, and undo now have two new options, --paths and
--paths-file.  These options replace the --files and --file-list
options.

The new options allow you to only commit selected files or
directories.  The class of files and directories is much larger than
it was with the previous --files options.  For example, it can handle
renames and deletions.  See "commit --help" for the exact limitations.

undo, redo, file-undo, file-diffs, tree-lint and delete have been
reimplemented in C++.  delete now has the semantics of rm(1), so it
takes -i, -r, and -f as options.

There is the start of new, free documentation in docs/.  The old,
non-free documentation is still available in docs/non-free.

The inventory methods have been revamped.  There used to be three ways
of deciding how to inventory files:

  1) naming conventions
  2) internal markers
  3) external markers

The old naming schemes look up files in the order:

        names -> 1
        implicit -> 3, 2, 1
        explicit -> 3

It would be useful to allow other orderings as well, such as

        external + names -> 3, 1
        external + internal, but no names -> 3, 2
        internal + names -> 2, 1

For example, foreign trees often have the same internal tag in a .c
file as well as a .h file.  So it would be good to be able to
eliminate that type of tagging for that tree.

So the inventory method has been generalized to allow any combination
of naming, internal, and external lookup schemes.  The first line of
{arch}/=tagging-method can look like

  naming external internal

with any of those elements being optional, although at least one is
required.  There is also "internal_deprecated".  It turns out that
the way that internal tags were computed with "implicit" was broken in
many ways.  "internal_deprecated" is provided for backwards
compatibility, but new projects are urged not to use it.  In many
cases, old projects can upgrade to the new "internal" inventory method
without problems.

If names, explicit, or implicit is found, then it gets mapped to the
corresponding attribute list.


ArX-1.0pre13 2003-10-7

This is a security fix release.  The security problem affects all past
releases of ArX and larch.

The security issue arises from insecure path handling in dopatch.
Carefully constructed patches can write anywhere allowed by the user.

The C++ version in pre13 corrects those oversights, so everyone is
encouraged to upgrade.

In addition, dopatch has slightly different semantics.  It modifies
patch directories when applying them, making them unsuitable for
reuse.

Finally, I have added "naming-convention".  It allows you to view and
set the regular expressions used in the naming conventions.  In
conjunction with this, when setting the tagging method, ArX now writes
out all the regular expressions to the =tagging-method file.


ArX-1.0pre12 2003-9-9

This is an unstable release.  inventory and mkpatch have been
rewritten in C++, and should be more robust.  mkpatch is about 15%
faster, though it doesn't seem to make much difference in commit.

ArX-1.0pre11 2003-8-11

This is an unstable bug-fix release.  "add" had a problem with adding
directories.

In addition, more commands have been reimplemented in C++:
make-archive, register-archive, and whereis-archive.  Also, FWIW, the Loki
library is being used.

ArX-1.0pre10 2003-8-3

This is an unstable release.

Arx is now being rewritten in C++.  It uses Boost (www.boost.org) for
many things.  There have been some minor modifications made to the
boost package, so an external boost library might have problems.

So far, add, archives, move, tagging-method, tree-version, my-browser,
my-editor, my-default-archive, and my-guidiff have been reimplemented.
"move" now has the same semantics as mv (although not all of the
options), making it much easier to use.  my-default-archive no longer
takes the -e and -A options.

RPM's should again be simple to make (thanks to Pekka Enberg).


ArX-1.0pre9 2003-6-29

The build system has been completely revamped.  Please read the
INSTALL file for the new procedure.  For now, building rpms will not work.

You can no longer commit to mirrors.  They should only be updated with
push-mirror.

The notifiers do not work anymore.  They will be replaced in the next
release.

ArX might work on IRIX now, but has not been really tested.


ArX-1.0pre8 2003-5-4

Minor bug fixes.  Added support for easy building of rpm's.  Should
make Debian support easier as well.  "arx add" now just gives a
warning and continues when trying to add something already add'ed,
instead of just exiting right away.  "arx delete" no longer works on
directories: use "rm -rf".


ArX-1.0pre7 2003-3-31

Minor updates to the manual.  Fixed a few brown-paper-bag bugs in the
last release.  Made update-distributions more verbose.  OS X 10.1 and
10.2 have now been tested and seem to work.


ArX-1.0pre6 2003-3-21

The additional tools from src/user-interface have been moved into a
the tools/ directory, to make them more visible.  I've also added
arch-tag (from Kristian G. Kvilekval), which is useful for adding
implicit tags to an existing tree.

Undo, redo and changelog have been added to the emacs mode.  The
*manifest cammands have been removed.  arx-mode also now binds 'C-x v ~'
to arx-file-diffs.

Building under Mac OS X is now easier.

Almost all instances of the confusing -R and -A options have been
removed.  Instead of using 

  arx get -A archive revision

just use

  arx get archive/revision


ArX-1.0pre5 2003-3-6

The manual has been completely updated to reflect the current state of
ArX.  If you see something wrong, please complain.

OS X support has actually been tested a little.  Seems to work with
10.1.  Not sure about 10.2.

update-distributions no longer includes the control files by default.
The --control option will include them.

Automated ChangeLog support has been removed.  Using archives that
already contain them should work fine, they just won't be updated
anymore.  ChangeLogs are redundant with the ordinary patch logs, and
can be generated as needed with "arx changelog".  If distributing
tarballs, use the --changelog and/or the --control option to
update-distributions.  The tarballs starting with pre5 will have
ChangeLogs, but no control files.

The --all option to inventory has been replaced with a more accurate
--control option.  In addition, how inventory decides what to print
out actually makes sense now.

missing-tags has been removed.  Use tree-lint instead.

The key combination C-x v i in the emacs mode no longer prompts for a
file name, just using the current file or directory.


ArX-1.0pre4

  This revision was skipped because of last minute bugs.


ArX-1.0pre3 2003-2-24

make-log no longer accepts --new-version or --nested as arguments.
Use create-version instead.

This incorporates a major change in how verbosity works.  The options now mean

  --silent            Almost no output, even errors.  Unexpected errors
                      (like calling the command incorrectly), will still
                      show, but a failed "update" will not.

  --quiet             no output except errors

  [nothing]           Only stuff that is needed after the command is
		      done.  Generally, but not always, passes --quiet
		      to subcommands.

  --default-output    same as nothing, but passes --default-output
                      to subcommands.

  --report            Stuff that lets you know what is generally going on.

  --verbose           Everything


ArX-1.0pre2

  This revision was skipped because of last minute bugs.


ArX-1.0pre1 2003-2-1

This is mostly a performance release.  Karel Gardas' mkpatch speedups
have been integrated, giving significant speedups for many commands.
That also means that a C++ compiler is now required.  The build system
has been lightly modified to allow this, but is not very robust right
now.


ArX-1.0pre0 2003-1-25

This is the initial release of ArX, a fork of the 'arch' version
control system.  For reference, older release notes are included
below.

For those updating from the last stable release of arch-landry
(pre10), a brief list of differences

  The name of the executable has changed from 'larch' to 'arx'

  per-file commits (see the help for commit)

  make-log and a few other commands pop up an editor

  The -A and -R options are in the process of being phased out, so
        they are absent from a few commands

  Numerous bug fixes.

The manual is certainly out of date in some places.  The tutorial and
help pages are kept up to date, though.


---------------------------------------------------------------------

2002-12-17

Added a bash completion script in src/user-interface/bash-complete.

2002-12-16

There is a new fix script, src/=fix-archive.sh.  There was a bug in
previous versions of arch that caused patches to contain some
extraneous files, making patches much bigger than they should be.  The
fix script goes through old archives, removing these files and
creating new patches.  Since it is rewriting archives, there is the
possibility of IRREVERSIBLE damage to your archive.  The script has
not been widely tested.  Use at your OWN RISK.

2002-11-1

If you are updating from a release before arch-landry-1.0pre4, and you
have not explicitly set your tagging method, then you need to set it
AND commit before using anything later.  That is, you need to do
something like

  larch tagging-method names
  larch make-log
  (edit log file)
  larch commit

After that, later versions should just work.

2002-10-09

This is a mostly a minor update.  A lot of commands are quieter, and
some bugs are fixed.  The big change is that the default tagging
method has changed from "names" to "explicit".  If you have not
explicitly set the tagging method, please do so before using this
version.

Beyond that, "move" and "delete" actually move and delete files now.


2002-09-01

This is the first release made after Tom Lord could no longer work on
the project.  The primary change is the addition of sftp and webDaV
support.  I've only tested sftp, and, after fixing a bug, it works for
me.  I, personally, haven't tested webDaV support at all, so I don't
know if it does anything at all.  These changes are pretty minimally
invasive, so it shouldn't break anything that isn't already broken.

I've also changed the behavior of 'larch import' and 'larch commit'.
Previously, those commands would rename the log files from
(ridiculously long name) to (ridiculously long name)~.  This never
made sense to me, since we still have access to the contents of the
log file through arch.  It also cluttered up the file listings.  So
now it deletes those files when it is done.

I've also included a tutorial into the documention.  I don't know how
Tom made the documentation, so the html and pdf are a little garbled.
They are still usable, but some commands that should have been parsed
are not.

I have not included the patches from 

  http://www.de.debian.org/debian/pool/main/a/arch/

They seem to be specific to making debian packages only, and not a
general patch.  I haven't looked too closely at it, though.  So I'm
willing to be convinced.

Finally, I've included my emacs mode under src/gui.  I'd be happy to
include any other gui's that people come up with.  There is a start
with Karel Gardas' patch which allows a gui tool to be used for
diff'ing.  The instructions are something like

  I used to use GUI-based diff tool like xxdiff (http://xxdiff.sf.net)
  or tkdiff (http://www.accurev.com/free/tkdiff/) and so I'd like to
  invoke these tools (one of them) directly from Arch command
  file-diffs. For this purpose I've added '--gui' option to the
  file-diffs command and ~/.arch-params/=gui-diff configure file for
  seting GUI diff tool. Patch against already installed file-diffs
  script is attached. For the moment you have to edit
  ~/.arch-params/=gui-diff by hand and add path to your favorite diff
  program e.g.

  thinkpad:~$ cat ~/.arch-params/=gui-diff
  /opt/xxdiff/bin/xxdiff
  thinkpad:~$

You can download a tarball of the whole thing at

  http://superbeast.ucsd.edu/~landry/larch/arch-landry-pre1.tar.gz

Enjoy,
Walter Landry
wlandry@ucsd.edu

<<<
2002-05-16

   This is a (minor) bug-fix release.

   *IF YOU USE REVISION LIBRARIES* you should grab the tar
   file form of this release (rather than `updating' from the
   repository) and run the script `src/arch/=fix-library.sh'.)
   That will fix a minor bug, one that won't effect most people,
   but better safe than sorry.

   That script is quite simple -- it rebuilds the cached
   inventories (`,,index' and `,,index-by-name') in revision
   libraries.

   Bugs fixed:

	* In cached library indexes, include directories.
	  (This is the bug fixed by the `=fix-library' script.)

	* A workaround for a bug in some (very old) versions of
	  awk.


>>>


%%% tag: Tom Lord Wed May 15 15:24:07 2002 (ArchRevCtl.d/ReleaseNews)
%%%
