[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Arx-users] Developer-only preview of ArX-2.0.0

From: Walter Landry
Subject: [Arx-users] Developer-only preview of ArX-2.0.0
Date: Sat, 18 Sep 2004 17:06:31 -0400 (EDT)


I've a got a new release somewhat done.  For now, you still have to
download it with ArX.  For example,

  arx register-archive address@hidden{archive} 
  arx get address@hidden/dists--arx--1.0 arx
  cd arx
  arx config --get configs/complete/arx.arx

It has a boatload of changes.  It is a large, incompatible change.
I'm fairly happy with the final format, though perfection is an
unattainable goal.  I have a NEWS file that I am appending that lists
most of the changes.  In the original email detailing all of the
changes [1], I had 13 different things I wanted to do.  Of those

1: Done, except that {arch} went to _arx, since that should cause
   fewer gratuitous problems with shells.  You shouldn't have to edit
   anything in _arx anyway, but it seemed gratuitous to make it
   difficult to handle.  I stole this name from darcs.

2: Done

3: Done

4: Done, although I decided to use the period "." as a version
   separator.  As an extra bonus, you can have any depth of branching.
   So you can have revisions in hello, hello.main, hello.main.german,
   hello.main.german.I am the very model of a modern major general,
   etc.  Yes, you can have spaces in branches and file names now.

5: Done

6: The {arch}/=tagging-method file has been replaced with _arx/ignore.
   That relates to a reduction in the number of inventory types to
   just source, control, ignored, and unrecognized.  Source and
   control go into the archive, and ignore don't cause warnings during

   Related to this, the internal and naming inventory methods have
   been removed.  Supporting them became too onerous when I was making
   the modifications, and I'm not convinced that, in the long run,
   they are a good idea anyway.

7: Done, although I decided to use the boost serialization library
   instead of url-encoding to achieve my ends.  Using a real
   serialization library simplified the code in many ways.  This means
   that you can use any byte except the null '\0' in filenames and
   branch names.  So utf-8, for example, should work fine.  The
   restriction on '\0' comes from having to use C apis for some

8: Done

9: Done

10: Done, although as a side note, to version permissions you have to
    use properties (stolen from subversion).  They are not
    automatically versioned for you.  This will make it easier to port
    ArX to windows, and removed some annoyances that I sometimes ran

11: Done

12: Done

13: There is no longer an exclude regex.  The only things that are
    control are things inside the _arx directory.

The docs should be up to date with all of these changes.  They need a
little polishing, but nothing major.

The code has been tested with some scripts (in tests/), but has not
been subject to hard core usage.  I still have to write a conversion
utility for all of my archives.  I also want to integrate the latest
SCons and update the emacs mode.  Then, once I've used the code for
while and am satisfied that there aren't any serious bugs, I'll spin a
real release.  For now, this is strictly a developer-only,
will-eat-your-hardrive, handle-with-care, release.



ArX-2.0.0 2004-Sep-??

This version marks a major incompatilibity.

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 changes.  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


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 not longer directly versioned.  Rather, you can set
arbitrary properties on paths.  See "arx property -H" for details.

A new version of boost has been included.

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

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

All of the commands that make a log no longer add in a Keywords:
field.  You can insert it if you like.

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"

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

reply via email to

[Prev in Thread] Current Thread [Next in Thread]