Unison File Synchronizer

Licence: GPL
Version 2.40.63 | Release Date: 2011-04-11 | Download

- Added "BelowPath" patterns, that match a path as well as all paths below (convenient to use with nodeletion,update,creationpartial preferences)
- Added a "fat" preference that makes Unison use the right options when one of the replica is on a FAT filesystem.
- Allow "prefer/force=newer" even when not synchronizing modification times. (The reconciler will not be aware of the modification time of unchanged files, so the synchronization choices of Unison can be different from when "times=true", but the behavior remains sane: changed files with the most recent modification time will be propagated.)
- Minor fixes and improvements:
-- Compare filenames up to decomposition in case sensitive mode when one host is running MacOSX and the unicode preference is set to true.
-- Rsync: somewhat faster compressor
-- Make Unicode the default on all architectures (it was only the default when a Mac OS X or Windows machine was involved).

-

Version 2.32.52 | Release Date: 2010-06-29 | Download

Changes since 2.32.44:

* Improvement to the code for resuming directory transfers: (1) make sure file information (permissions, ...) has been properly set when using a previously transferred temp file (2) make sure previously transferred directories are writable (other changes made in the developer version of Unison require a protocol change)
* Got rid of the 16MiB marshalling limit by marshalling to a bigarray
* Ignore one hour differences for deciding whether a file may have been updated. This avoids slow update detection after daylight saving time changes under Windows. This makes it slightly more likely to miss an update, but that should be safe enough.
* Improved Unison icon under Windows
* Case sensitivity information put in the archive (in a backward compatible way) and checked when the archive is loaded
* Uses improved emulation of "select" call provided by Ocaml 3.11 under Windows (the GUI does not freeze as much during synchronization)
* Upgraded to GPL version 3 and added copyright notice to documentation files.
* Unison can sometimes fail to transfer a file, giving the unhelpful message "Destination updated during synchronization" even though the file has not been changed. This can be caused by programs that change either the file's contents or the file's extended attributes without changing its modification time. I'm not sure what is the best fix for this – it is not Unison's fault, but it makes Unison's behavior puzzling – but at least Unison can be more helpful about suggesting a workaround (running once with 'fastcheck' set to false). The failure message has been changed to give this advice.
* Text UI
o During update detection, display status by updating a single line rather than generating a new line of output every so often. That should be less confusing.
o In repeat mode, don't save the archives when there is no update. Indeed, in this mode, we should minimize the amount of work performed and it is unlikely that the archives have changed much.
* Bugfixes
o Fixed quotation of paths and names when writing to a preference file
o Fixed bug resulting in slow performances when transferring a file using our rsync implementation from a 64-bit architecture to a 32-bit architecture.
o Fixed bug in Lwt_unix.run which could make it fail with a Not_found exception (see [Not_found raised in tryCopyMovedFile] errors)
o Properly deals with non-conformant AppleDouble files produced by Mac OS X.
o Fixed bug that results in Unison missing ressource fork changes
o Applied a patch from Karl M to make the GTK2 version build with OCaml 3.11 on Windows.
o Added some extra debugging code to remote.ml to give more informative error messages when people encounter the longstanding "assert failed during file transfer" bug.
o Applied patch from Antoine Reilles for NetBSD compilation
o Resizing the update window vertically no longer moves the status label. Fix contributed by Pedro Melo.

Version 2.32.12 | Release Date: 2009-05-06 | Download

2009.05.06, beta, should work on Tiger and Leopard

Version 2.32.12 | Release Date: 2009-05-06 | Download

2009.05.06, beta, should work on Tiger and Leopard

Version 2.27.72 | Release Date: 2008-05-29 | Download

The command line tool was only compiled for Leopard. It's now compiled for both Leopard and Tiger.

Version 2.27.68 | Release Date: 2008-05-24 | Download

Fixed the dreaded "uncaught array exception" error. Compiled for Tiger and Leopard, universal binary.

Version 2.27.55 | Release Date: 2008-01-21 | Download

Changes in Version 2.27

Changes since 2.17:
* Major rewrite and cleanup of the whole Mac OS X graphical user
interface by Craig Federighi. Thanks, Craig!!!
* 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.
* The Unison project now accepts donations via PayPal. You can
find
a link to the donation page on the Unison home page
(http://www.cis.upenn.edu/~bcpierce/unison/lists.html).
* 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
people.)
+ 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 issues).
+ 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 maximum
verbosity.
+ 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 .xls
files).
+ Ignore all-whitespace lines in preference files
+ Small fix to ctime (non-)handling in update detection under
windows with fastcheck.
* 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' preference.
+ 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.)
* OSX interface:
+ Incorporated Ben Willmore's cool new icon for the Mac UI.
* Small fixes:
+ Fixed off by one error in month numbers (in printed dates)
reported by Bob Burger

Version 2.27.55 | Release Date: 2008-01-20 | Download

Changes in Version 2.27

Changes since 2.17:
* Major rewrite and cleanup of the whole Mac OS X graphical user
interface by Craig Federighi. Thanks, Craig!!!
* 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.
* The Unison project now accepts donations via PayPal. You can
find
a link to the donation page on the Unison home page
(http://www.cis.upenn.edu/~bcpierce/unison/lists.html).
* 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
people.)
+ 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 issues).
+ 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 maximum
verbosity.
+ 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 .xls
files).
+ Ignore all-whitespace lines in preference files
+ Small fix to ctime (non-)handling in update detection under
windows with fastcheck.
* 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' preference.
+ 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.)
* OSX interface:
+ Incorporated Ben Willmore's cool new icon for the Mac UI.
* Small fixes:
+ Fixed off by one error in month numbers (in printed dates)
reported by Bob Burger

Version 2.27.47-i386 | Release Date: 2007-10-30 | Download
No changes specified
Version 2.27.47-ppc | Release Date: 2007-10-30 | Download
No changes specified
Version 2.24.8 | Release Date: 2006-11-29 | Download
No changes specified
Version 2.13.16 | Release Date: 2006-08-19 | Download
No changes specified