[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnu-arch-users] Fai update: Native merge, submit trees and more
From: |
Aaron Bentley |
Subject: |
[Gnu-arch-users] Fai update: Native merge, submit trees and more |
Date: |
Mon, 20 Sep 2004 19:30:05 -0400 |
User-agent: |
Mozilla Thunderbird 0.5 (X11/20040306) |
Here's the latest on Fai development
(to install get started with Fai, see
"http://www.sourcecontrol.net/~abentley/fai/")
Current dist revision:
address@hidden/fai--dist--0.2--patch-78
Current devel revision:
address@hidden/fai--devel--0--patch-205
I'm happy with Fai's current state-- it's very usable for what I do.
There are still some niggly things; I want a native replay command, for
example; I want to specify patchlevels for single-revision mode, and I
want to specify "--micro" or "--non-dependencies --reverse" for multiple
-revision mode.
I'd like hear from anyone who's using it, and especially anyone who's
tried it and chosen not to use it, what you think of it.
Various minor tweaks and bugfixes aren't mentioned, but there's a fine
changelog to read.
http://www.sourcecontrol.net/~abentley/fai/changelog.php
Looking at new names
====================
Fai needs a new name, since "fai" is already "Fully Automated
Installation", which is provided by at least Debian. I'm considering
"afa" for "Accessible Front-end for Arch".
Changeset Munger
================
Broke the ChangesetMunger into a changeset representation and a set of
munging options.
Documentation Fixups
====================
Some tweakage from David Allouche
Revert
======
Revert gained the ability to revert only logs or all control files, and
to revert files based on pattern matches. ("revert --logs", "revert
--control-files", "revert --pattern-files")
Revisions
=========
Added --micro: revisions in the partner version with a "Microbranch:"
header for this revision.
Added --skip-present
Added --present: missing revisions that have patchlogs in the tree
Changes
=======
Changes now allows users to specify the diff options for viewing diffs.
("changes --diffopts -c"). Standard diff output is native, too.
The generated changesets are unaffected.
Commit and elog
===============
Better handling of situations where the user doesn't provide a suitable log
Terminal codes
==============
David Allouche: detection of whether to use terminal control codes for
colour and title bars
Alias
=====
The alias command went native, and now allows you to list all aliases,
list one alias, set an alias or delete an alias. Per-tree aliases are
supported.
Submit Trees
============
Fai now supports submit trees, which means the following:
If you have a {arch}/+submit-version file, Fai uses its contents as the
tree's "submit version". Every time you merge from the tree's submit
version, Fai will perform "revert", "changes" and "commit" relative to
the newest submit revision. Once you have committed, their behaviour
returns to normal. I use this functionality for preparing tla merge
requests against James' latest revision.
This functionality requires commit --base, which I expect to submit soon.
Native merge
============
Fai takes more control than ever over merging, with its own
ancestor-picker. This algorithm is heavily based on the star-merge
ancestor-picker, but has a few nice tweaks:
- it follows ancestry across continuations
- it halts when it encounters parallel merges, instead of doing the
wrong thing.
Since it follows continuations, the native merge never needs a
--reference. This, in turn, simplifies the algorithm. It also handles
mixed versions properly.
The Canonical crew and I independently discovered that star-merge can't
handle parallel merges. (See the "Star-merge Fatally Wounded" thread.)
Fai's merge also requires an unambiguous last-merge, so it suffers
from the same weakness. But unlike star-merge, it can detect situations
in which there is no unambiguous last merge, and exit with an error
explaining the situation.
You may be wondering why I didn't simply fix star-merge; there are a few
reasons:
1. Tom is very conservative about star-merge. Hopefully, the Fai
implementation can serve to show that the ideas are sound, and
eventually lead to improving star-merge
2. It was easy. The ancestor picker is less than 40 lines of code.
3. It allows Fai to support graphical merging.
Graphical three-way merging has been described by Linus Torvalds as a
must-have feature for any RCS hoping to replace BitKeeper. While Fai
can perform the merge using the apply-delta strategy, it can also simply
return the name of the selected revision. Fai's get command can
retrieve the desired trees. Fai's revert --renames command can rename
all files to match their names in the working tree's revision. You can
then invoke any three-way merge tool you like, and remove the extra
trees afterward.
It should be easy to add Arch support to Meld, since Meld is also
Python-based.
Aaron
- [Gnu-arch-users] Fai update: Native merge, submit trees and more,
Aaron Bentley <=