! ArX Release News ArX-2.2.4 2005-Nov-16 "merge" now uses a three-way merge by default, with support for external merge tools. "merge" also now takes the --update option instead of using heuristics. "merge", "dopatch", and "replay" now record when there are conflicts in the tree, and "commit" will refuse to act unless they are cleaned up with "resolve". The --silent, --quiet, --default-output, --report, and --verbose options have been replaced with -v and -q options. ArX is now much more clever when dealing with renames. "commit" and "tag" now support --author and --date options. The patch queue manager has been updated. Some bugs when working across filesystems have been fixed. 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) %%%