Subject: CVS commit: pkgsrc/net/unison
From: Thomas Klausner
Date: 2009-11-20 21:18:47
Message id: 20091120201848.0AACC175DD@cvs.netbsd.org

Log Message:
Update to 2.32.52, ok tonio.
Set license.

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.

Changes since 2.31:

    * Minor fixes and improvements:
          o Ignore one hour differences when deciding whether a file may have \ 
been updated. This avoids slow update detection after daylight saving time \ 
changes under Windows. This makes Unison slightly more likely to miss an update, \ 
but it should be safe enough.
          o Fix a small bug that was affecting mainly windows users. We need to \ 
commit the archives at the end of the sync even if there are no updates to \ 
propagate because some files (in fact, if we've just switched to DST on windows, \ 
a LOT of files) might have new modtimes in the archive. (Changed the text UI \ 
only. It's less clear where to change the GUI.)
          o Don't delete the temp file when a transfer fails due to a \ 
fingerprint mismatch (so that we can have a look and see why!) We've also added \ 
more debugging code togive more informative error messages when we encounter the \ 
dreaded and longstanding "assert failed during file transfer" bug

Changes since 2.27:

    * If Unison is interrupted during a directory transfer, it will now leave \ 
the partially transferred directory intact in a temporary location. (This \ 
maintains the invariant that new files/directories are transferred either \ 
completely or not at all.) The next time Unison is run, it will continue filling \ 
in this temporary directory, skipping transferring files that it finds are \ 
already there.
    * We've added experimental support for invoking an external file transfer \ 
tool for whole-file copies instead of Unison's built-in transfer protocol. Three \ 
new preferences have been added:
          o copyprog is a string giving the name (and command-line switches, if \ 
needed) of an external program that can be used to copy large files efficiently. \ 
By default, rsync is invoked, but other tools such as scp can be used instead by \ 
changing the value of this preference. (Although this is not its primary \ 
purpose, rsync is actually a pretty fast way of copying files that don't already \ 
exist on the receiving host.) For files that do already exist on (but that have \ 
been changed in one replica), Unison will always use its built-in implementation \ 
of the rsync algorithm.
          o Added a "copyprogrest" preference, so that we can give \ 
different command lines for invoking the external copy utility depending on \ 
whether a partially transferred file already exists or not. (Rsync doesn't seem \ 
to care about this, but other utilities may.)
          o copythreshold is an integer (-1 by default), indicating above what \ 
filesize (in megabytse the external copying utility specified by copyprog. \ 
Specifying 0 will cause ALL copies to use the external program; a negative \ 
number will prevent any files from using it. (Default is -1.)
      Thanks to Alan Schmitt for a huge amount of hacking and o an anonymous \ 
sponsor for suggesting and underwriting this extension.
    * Small improvements:
          o Added a new preference, dontchmod. By default, Unison uses the chmod \ 
system call to set the permission bits of files after it has copied them. Butin \ 
some circumstances (and under some operating systems), the chmod call always \ 
fails. Setting this preference completely prevents Unison from ever calling \ 
chmod.
          o Don't ignore files that look like backup files if the backuplocation \ 
preference  set to central
          o Shortened the names of several preferences. The old names are also \ 
still supported, for backwards compatibility, but they do not appear in the \ 
documentation.
          o Lots of little documentation tidying. (In particular, preferences \ 
are separated into Basic and Advanced! This should hopefully make Unison a \ 
little more approachable for new users.
          o Unison can sometimes fail to transfer a file, giving the unhelpful \ 
message "Destination updated during synchronization"
#

    * Further improvements to the OS X GUI (thanks to Alan Schmitt and Craig \ 
Federighi).

# Very preliminary support for triggering Unison from an external \ 
filesystem-watching utility. The current implementation is very simple, not \ 
efficient, and almost completely untested—not ready for real users. But if \ 
someone wants to help improve it (e.g., by writing a filesystem watcher for your \ 
favorite OS), please make yourself known!

On the Unison side, the new behavior is very simple:

    * use the text UI
    * start Unison with the command-line flag "-repeat FOO", where FOO \ 
is name of a file where Unison should look for notifications of changes
    * when it starts up, Unison will read the whole contents of this file (on \ 
both hosts), which should be a newline-separated list of paths (relative to the \ 
root of the synchronization) and synchronize just these paths, as if it had been \ 
started with the "-path=xxx" option for each one of them
    * when it finishes, it will sleep for a few seconds and then examine the \ 
watchfile again; if anything has been added, it will read the new paths, \ 
synchronize them, and go back to sleep
    * that's it!

To use this to drive Unison "incrementally," just start it in this \ 
mode and start up a tool (on each host) to watch for new changes to the \ 
filesystem and append the appropriate paths to the watchfile. Hopefully such \ 
tools should not be too hard to write.
# Bug fixes:

    * Fixed a bug that was causing new files to be created with permissions \ 
0x600 instead of using a reasonable default (like 0x644), if the 'perms' flag \ 
was set to 0. (Bug reported by Ben Crowell.)
    * Follow maxthreads preference when transferring directories.

Files:
RevisionActionfile
1.37modifypkgsrc/net/unison/Makefile
1.14modifypkgsrc/net/unison/distinfo
1.8modifypkgsrc/net/unison/patches/patch-aa
1.5removepkgsrc/net/unison/patches/patch-ab
1.5removepkgsrc/net/unison/patches/patch-ac