[unison-users] New beta-release (2.27)
- [A better-formatted version of the announcement... -B]
On behalf of all the Unison developers and contributors, I am
delighted to announce a new beta-release. Sources are now available
from the download page, together with precompiled binaries for some
This release has one known issue at this time: The 'fastcheck' option
does not appear to be working reliably under windows. Once this is
resolved, 2.27 will be promoted to stable status.
Changes since 2.17:
* The Unison project now accepts donations via PayPal. If
you'd like to donate, you can find a link to the donation
page on the Unison home page:
* Several small fixes to the GTK2 UI to make it work better
under Windows [thanks to Karl M for these].
* The backup functionality has been completely
rewritten. The external interface has not changed, but
numerous bugs, irregular behaviors, and cross-platform
inconsistencies have been corrected.
* Some important safety improvements:
+ Added a new mountpoint preference, which can be used
to specify a path that must exist in both replicas at
the end of update detection (otherwise Unison
aborts). This can be used to avoid potentially
dangerous situations when Unison is used with
removable media such as external hard drives and
compact flash cards.
+ The confirmation of "big deletes" is now controlled
by a boolean preference confirmbigdeletes. Default is
true, which gives the same behavior as
previously. (This functionality is at least partly
superceded by the mountpoint preference, but it has
been left in place in case it is useful to some
+ If Unison is asked to "follow" a symbolic link but
there is nothing at the other end of the link, it
will now flag this path as an error, rather than
treating the symlink itself as missing or
deleted. This avoids a potentially dangerous
situation where a followed symlink points to an
external filesystem that might be offline when Unison
is run (whereupon Unison would cheerfully delete the
corresponding files in the other replica!).
* Smaller changes:
+ Added forcepartial and preferpartial preferences,
which behave like force and prefer but can be
specified on a per-path basis. [Thanks to Alan
Schmitt for this.]
+ A bare-bones self test feature was added, which runs
unison through some of its paces and checks that the
results are as expected. The coverage of the tests is
still very limited, but the facility has already been
very useful in debugging the new backup functionality
(especially in exposing some subtle cross-platform
+ Refined debugging code so that the verbosity of
individual modules can be controlled
separately. Instead of just putting '-debug verbose'
on the command line, you can put '-debug update+',
which causes all the extra messages in the Update
module, but not other modules, to be printed. Putting
'-debug verbose' causes all modules to print with
+ Removed mergebatch preference. (It never seemed very
useful, and its semantics were confusing.)
+ Rewrote some of the merging functionality, for better
cooperation with external Harmony instances.
+ Changed the temp file prefix from .# to .unison.
+ Compressed the output from the text user interface
(particularly when run with the -terse flag) to make
it easier to interpret the results when Unison is run
several times in succession from a script.
+ Diff and merge functions now work under Windows.
+ Changed the order of arguments to the default diff
command (so that the + and - annotations in diff's
output are reversed).
+ Added .mpp files to the "never fastcheck" list (like
* Many small bugfixes, including:
+ Fixed a longstanding bug regarding fastcheck and
daylight saving time under Windows when Unison is set
up to synchronize modification times. (Modification
times cannot be updated in the archive in this case,
so we have to ignore one hour differences.)
+ Fixed a bug that would occasionally cause the
archives to be left in non-identical states on the
two hosts after synchronization.
+ Fixed a bug that prevented Unison from communicating
correctly between 32- and 64-bit architectures.
+ On windows, file creation times are no longer used as
a proxy for inode numbers. (This is unfortunate, as
it makes fastcheck a little less safe. But it turns
out that file creation times are not reliable under
Windows: if a file is removed and a new file is
created in its place, the new one will sometimes be
given the same creation date as the old one!)
+ Set read-only file to R/W on OSX before attempting to
change other attributes.
+ Fixed bug resulting in spurious "Aborted" errors
during transport (thanks to Jerome Vouillon)
+ Enable diff if file contents have changed in one
replica, but only properties in the other.
+ Removed misleading documentation for 'repeat'
+ Fixed a bug in merging code where Unison could
sometimes deadlock with the external merge program,
if the latter produced large amounts of output.
+ Workaround for a bug compiling gtk2 user interface
against current versions of gtk2+ libraries.
+ Added a better error message for "ambiguous paths".
+ Squashed a longstanding bug that would cause file
transfer to fail with the message "Failed: Error in
readWrite: Is a directory."
+ Replaced symlinks with copies of their targets in the
Growl framework in src/uimac. This should make the
sources easier to check out from the svn repository
on WinXP systems.
+ Added a workaround (suggested by Karl M.) for the
problem discussed on the unison users mailing list
where, on the Windows platform, the server would hang
when transferring files. I conjecture that the
problem has to do with the RPC mechanism, which was
used to make a call back from the server to the
client (inside the Trace.log function) so that the
log message would be appended to the log file on the
client. The workaround is to dump these messages
(about when xferbycopying shortcuts are applied and
whether they succeed) just to the standard output of
the Unison process, not to the log file.
Changes since 2.13:
* The features for performing backups and for invoking
external merge programs have been completely rewritten by
Stephane Lescuyer (thanks, Stephane!). The user-visible
functionality should not change, but the internals have
been rationalized and there are a number of new
features. See the manual (in particular, the description
of the backupXXX preferences) for details.
* Incorporated patches for ipv6 support, contributed by
Samuel Thibault. (Note that, due to a bug in the released
OCaml 3.08.3 compiler, this code will not actually work
with ipv6 unless compiled with the CVS version of the
OCaml compiler, where the bug has been fixed; however,
ipv4 should continue to work normally.)
* Fixed off by one error in month numbers (in printed dates)
reported by Bob Burger