[Top][All Lists]

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

[Arx-users] incompatible changes

From: Walter Landry
Subject: [Arx-users] incompatible changes
Date: Fri, 21 May 2004 20:03:59 -0400 (EDT)


This is just a note to let people know that I have embarked on some
major, incompatible changes to ArX.  So far, my list of things to
change are

1 Change {arch} to {arx} since the contents are going to be rather
  different.  I could also use ARX (like CVS), but {arx} has the nice
  property that it is unlikely to conflict with anything and sorts well.

2 Change .arch-params to .arx, and change all of the files inside from
  "=foo" to "foo".  There is no reason to uglify the names inside the

3 Replace all of the .arch-id files with a single file
  {arx}/++manifest.  The checksum file has SHA256 sums of the contents
  of files already listed, as well as permissions and any explicit
  inventory id's.  Adding, moving, and deleting files only adds
  entries into {arx}/++changes.  This is also part of integrating
  digital signatures.

4 Change the whole archive/category--branch--version--patch-NN scheme
  into archive/category--branch--NN.  I considered using "." as a
  separator, but I could see that people could want to put version
  numbers in their branch names.  The "--" separator is unlikely to
  conflict with any character sequence that people would like to put
  into the archive, category, or branch names.  In addition, the only
  restrictions on archive, category and branch names is that they
  can't contain "/" or "--".

5 Related to the above, the structure on disk will become
  archive/category/branch/NN instead of the various different cases of
  (patch logs in project trees) or
  (revision libraries).  For patch-logs, all of the patch-logs will be
  under a patch-log directory (so
  {arx}/patch-log/archive/category/branch/NN), so we won't have to
  worry about category names conflicting with other file names.

6 Change {arx}/=tagging-method to {arx}/tagging-method.

7 Whenever a filename is written to a file (for example, in
  "mod-files-index" in a patch), it is first url-encoded.  I'm
  thinking of url-encoding the archive, category, and branch names
  before creating directories with those names, but I may not.  This
  will enable internationalization (and spaces in names for those who
  don't care about I18N).

8 Currently, when using pure naming for tagging-method, it inventories
  the {arx} directory differently from if we're using external or
  internal inventory ids.  I will change it to be the same no matter
  what the inventory method is

9 Don't have an initial *.src.tar.gz file for the base revision.
  Instead, just use make the initial patch good enough to create the
  initial version from nothing.

10 Get rid of (orig|mod)-only-metadata in the patch.  It is redundant,
   since we have a copy of the directory in the patch.

11 Remove the internal-deprecated inventory method.  It is kind of
   dumb, and no one really recommends it anyway.  The plain internal
   inventory method will still be around.

12 Get rid of locked and unlocked pristines, and rename
   ++pristine-trees to ++cache, so the directory structure is

13 Change the "exclude" regex to "control"

I also considered changing the internal inventory mechanism to use an
"arx-tag:" marker instead of "arch-tag:".  But it doesn't really
matter to me since I don't use the internal inventory method much
anyway.  It would also make it pointlessly incompatible with TLA.

So far, I've already implemented 1, 8, 9, and 10.  I'm about half way
through 3.  2, 6, 11, and 13 should be easy.  4, 5, and 12 will require
some work, although it is not as bad as it might seem.  7 is already
mostly implemented, just not enabled.  So I'm thinking that I will be
able to put out an experimental release in about a month.

Before I started, I also made minor improvements to some commands
while retaining compatibility.  So you can update to
package-framework--arx--1.0--patch-389, but anything past that will
just give you a broken ArX.

Those are basically all of the things that I could think of that have
been bugging me since the beginning.  The only thing missing is a way
of really eliminating pristine trees.  I have a few ideas bouncing
around in my head, but none of them will entail breaking compatibilty
again.  I'm also no longer completely convinced that it is a problem
that needs to be solved.

If you have any other suggestions or comments for incompatible
changes, speak now or forever hold your peace.


reply via email to

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