[Unison-hackers] [unison-svn] r411 - in trunk: doc src src/ubase

bcpierce@seas.upenn.edu bcpierce at seas.upenn.edu
Sat Feb 20 18:06:02 EST 2010


Author: bcpierce
Date: 2010-02-20 18:06:02 -0500 (Sat, 20 Feb 2010)
New Revision: 411

Modified:
   trunk/doc/changes.tex
   trunk/src/NEWS
   trunk/src/RECENTNEWS
   trunk/src/mkProjectInfo.ml
   trunk/src/strings.ml
   trunk/src/ubase/depend
Log:
* Update documentation in preparation for beta-release


Modified: trunk/doc/changes.tex
===================================================================
--- trunk/doc/changes.tex	2010-02-17 13:06:38 UTC (rev 410)
+++ trunk/doc/changes.tex	2010-02-20 23:06:02 UTC (rev 411)
@@ -1,3 +1,203 @@
+\begin{changesfromversion}{2.32}
+\item Major enhancement: Unicode support.  
+\begin{itemize}
+\item Unison should now handle unicode filenames correctly on all platforms.
+\item This functionality is controlled by a new preference {\tt unicode}.
+\item Unicode mode is now the default when one of the hosts is under
+  Windows or MacOS.  This may make upgrades a bit more painful (the
+  archives cannot be reused), but this is a much saner default.
+\end{itemize}
+\item Partial transfer of directories.  If an error occurs while
+  transferring a directory, the part transferred so far is copied into
+  place (and the archives are updated accordingly).
+  The "maxerrors" preference controls how many transfer error Unison
+  will accept before stopping the transfer of a directory (by default,
+  only one).  This makes it possible to transfer most of a directory
+  even if there are some errors.  Currently, only the first error is
+  reported by the GUIs.
+
+  Also, allow partial transfer of a directory when there was an error deep
+  inside this directory during update detection.  At the moment, this
+  is only activated with the text and GTK UIs, which have been
+  modified so that they show that the transfer is going to be partial
+  and so that they can display all errors.
+\item Improvement to the code for resuming directory transfers:
+\begin{itemize}
+\item 
+   if a file was not correctly transferred (or the source has been
+    modified since, with unchanged size), Unison performs a new
+    transfer rather than failing
+  \item spurious files are deleted (this can happen if a file is deleted
+    on the source replica before resuming the transfer; not deleting
+    the file would result in it reappearing on the target replica)
+\end{itemize}
+\item Experimental streaming protocol for transferring file contents (can
+  be disabled by setting the directive "stream" to false): file
+  contents is transfered asynchronously (without waiting for a response
+  from the destination after each chunk sent) rather than using the
+  synchronous RPC mechanism.  As a consequence:
+  \begin{itemize}
+  \item 
+   Unison now transfers the contents of a single file at a time
+    (Unison used to transfer several contents simultaneously in order
+    to hide the connection latency.)
+  \item the transfer of large files uses the full available bandwidth
+    and is not slowed done due to the connection latency anymore
+  \item we get performance improvement for small files as well by
+    scheduling many files simultaneously (as scheduling a file for
+    transfer consume little ressource: it does not mean allocating a
+    large buffer anymore)
+  \end{itemize}
+\item Changes to the internal implementation of the rsync algorithm:
+\begin{itemize}
+\item 
+  use longer blocks for large files (the size of a block is the
+    square root of the size of the file for large files);
+  \item transmit less checksum information per block (we still have less
+    than one chance in a hundred million of transferring a file
+    incorrectly, and Unison will catch any transfer error when
+    fingerprinting the whole file)
+  \item avoid transfer overhead (which was 4 bytes per block)
+\end{itemize}
+  For a 1G file, the first optimization saves a factor 50 on the
+  amount of data transferred from the target to the source (blocks
+  are 32768 bytes rather than just 700 bytes).  The two other
+  optimizations save another factor of 2 (from 24 bytes per block
+  down to 10).
+\item Implemented an on-disk file fingerprint cache to speed-up update
+  detection after a crash: this way, Unison does not have do recompute
+  all the file fingerprints from scratch.
+  \begin{itemize}
+  \item When Unison detects that the archive case-sensitivity mode
+  does not match the current settings, it populates the fingerprint
+  cache using the archive contents.  This way, changing the
+  case-sensitivity mode should be reasonably fast.
+  \end{itemize}
+\item New preferences "noupdate=root", "nodeletion=root", "nocreation=root"
+  that prevent Unison from performing files updates, deletions or
+  creations on the given root.  Also 'partial' versions of 'noupdate',
+  'nodeletion' and 'nocreation' 
+\item Limit the number of simultaneous external copy program
+  ("copymax" preference)
+\item New "links" preference.  When set to false, Unison will report an
+  error on symlinks during update detection.  (This is the default
+  when one host is running Windows but not Cygwin.)  This is better
+  than failing during propagation.
+\item Added a preference "halfduplex" to force half-duplex communication
+  with the server.  This may be useful on unreliable links (as a more
+  efficient alternative to "maxthreads = 1").
+\item Renamed preference "pretendwin" to "ignoreinodenumbers" (an alias is
+  kept for backwards compatibility).
+\item Ignore one-second differences when synchronizing modification time.
+  (Technically, this is an incompatible archive format change, but it
+   is backward compatible.  To trigger a problem, a user would have to
+   synchronize modification times on a filesystem with a two-second
+   granularity and then downgrade to a previous version of Unison,
+   which does not work well in such a case.  Thus, it does not
+   seem worthwhile to increment the archive format number, which would
+   impact all users.)
+\item Do not keep many files simultaneously opened anymore when the rsync
+  algorithm is in use.
+\item Add ``ignorearchives'' preference to ignore existing archives (to
+  avoid forcing users to delete them manually, in situations where one
+  archive has gotten   deleted or corrupted).
+\item Mac OS
+\begin{itemize}
+\item fixed rsync bug which could result in an "index out of bounds"
+  error when transferring resource forks.
+\item Fixed bug which made Unison ignore finder information and resource
+  fork when compiled to 64bit on Mac OSX.
+\item should now be 64 bit clean (the Growl framework is not up to date,
+    though)
+\item Made the bridge between Objective C and Ocaml code GC friendly
+    (it was allocating ML values and putting them in an array which
+    was not registered with the GC)
+\item use darker grey arrows (patch contributed by Eric Y. Kow)
+\end{itemize}
+\item GTK user interface
+\begin{itemize}
+\item  assistant for creating profiles
+\item profile editor
+\item pop up a summary window when the replicas are not fully
+    synchronized after transport
+\item display estimated remaining time and transfer rate on the
+  progress bar
+\item allow simultaneous selection of several items
+\item Do not reload the preference file before a new update
+  detection if it is unchanged
+\item disabled scrolling to the first unfinished item during transport.
+  It goes way too fast when lot of small files are synchronized, and it
+  makes it impossible to browse the file list during transport.
+\item take into account the "height" preference again
+\item the internal list of selected reconciler item was not always in
+    sync with what was displayed (GTK bug?); workaround implemented
+\item Do not display "Looking for change" messages during propagation
+  (when checking the targe is unchanged) but only during update detection
+\item Apply patch to fix some crashes in the OSX GUI, thanks to Onne Gorter.
+\end{itemize}
+\item Text UI
+\begin{itemize}
+\item During update detection, display status by updating a single line
+rather than generating a new line of output every so often.  Should be less
+confusing.
+\end{itemize}
+\item Windows 
+\begin{itemize}
+\item Fastcheck is now the default under Windows.  People mostly use NTFS
+  nowadays and the Unicode API provides an equivalent to inode numbers
+  for this filesystem.
+\item Only use long UNC path for accessing replicas (as '..' is
+  not handled with this format of paths, but can be useful)
+\item Windows text UI: now put the console into UTF-8 output mode.  This
+  is the right thing to do when in Unicode mode, and is no worse than
+  what we had previously otherwise (the console use some esoteric
+  encoding by default).  This only works when using a Unicode font
+  instead of the default raster font.
+\item Don't get the home directory from environment variable HOME under
+  Windows (except for Cygwin binaries): we don't want the behavior of
+  Unison to depends on whether it is run from a Cygwin shell (where
+  HOME is set) or in any other way (where HOME is usually not set).
+\end{itemize}
+\item Miscellaneous fixes and improvements
+\begin{itemize}
+\item Made a server waiting on a socket more resilient to unexpected
+  lost connections from the client.
+\item Small patch to property setting code suggested by Ulrich Gernkow.
+\item Several fixes to the change transfer functions (both the internal ones
+  and external transfers using rsync).  In particular, limit the number of
+  simultaneous transfer using an rsync
+  (as the rsync algorithm can use a large amount of memory when
+   processing huge files)
+\item Keep track of which file contents are being transferred, and delay
+  the transfer of a file when another file with the same contents is
+  currently being transferred.  This way, the second transfer can be
+  skipped and replaced by a local copy.
+\item Experimental update detection optimization:
+  do not read the contents of unchanged directories
+\item When a file transfer fails, turn off fastcheck for this file on the
+  next sync.
+\item Fixed bug with case insensitive mode on a case sensitive filesystem:
+\begin{itemize}
+\item 
+   if file "a/a" is created on one replica and directory "A" is
+    created on the other, the file failed to be synchronized the first
+    time Unison is run afterwards, as Unison uses the wrong path "a/a"
+    (if Unison is run again, the directories are in the archive, so
+     the right path is used);
+  \item if file "a" appears on one replica and file "A" appears on the
+    other with different contents, Unison was unable to synchronize
+    them.
+\end{itemize}
+\item Improved error reporting when the destination is updated during
+  synchronization: Unison now tells which file has been updated, and how.
+\item Limit the length of temporary file names
+\item Case sensitivity information put in the archive (in a backward
+  compatible way) and checked when the archive is loaded
+\item Got rid of the 16mb marshalling limit by marshalling to a bigarray.
+\item Resume copy of partially transferred files.
+\end{itemize}
+\end{changesfromversion}
+
 \begin{changesfromversion}{2.31}
 \item Small user interface changes
 \begin{itemize}
@@ -22,6 +222,11 @@
   added more debugging code togive more informative error messages when we
   encounter the dreaded and longstanding "assert failed during file
   transfer" bug
+\item Incorrect paths ("path" directive) now result in an error update
+  item rather than a fatal error.
+\item Create parent directories (with correct permissions) during
+  transport for paths which point to non-existent locations in the
+  destination replica.
 \end{itemize}
 \end{changesfromversion}
 

Modified: trunk/src/NEWS
===================================================================
--- trunk/src/NEWS	2010-02-17 13:06:38 UTC (rev 410)
+++ trunk/src/NEWS	2010-02-20 23:06:02 UTC (rev 411)
@@ -1,13 +1,129 @@
 
-Changes in Version 2.32.1
+Changes in Version 2.40.1
 
+   Changes since 2.31:
+     * Small user interface changes
+          + Small change to text UI "scanning..." messages, to print just
+            directories (hopefully making it clearer that individual
+            files are not necessarily being fingerprinted).
+     * Minor fixes and improvements:
+          + 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.
+          + 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.)
+          + 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:
+          + 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.
+          + 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.)
+          + copythreshold is an integer (-1 by default), indicating above
+            what filesize (in megabytes) Unison should use 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 to an
+       anonymous sponsor for suggesting and underwriting this extension.
+     * Small improvements:
+          + 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. But in some circumstances (and
+            under some operating systems), the chmod call always fails.
+            Setting this preference completely prevents Unison from ever
+            calling chmod.
+          + Don't ignore files that look like backup files if the
+            backuplocation preference is set to central
+          + Shortened the names of several preferences. The old names are
+            also still supported, for backwards compatibility, but they
+            do not appear in the documentation.
+          + 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.
+          + 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. It's not clear 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.
+          + 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.
+
    Changes since 2.17:
      * Major rewrite and cleanup of the whole Mac OS X graphical user
        interface by Craig Federighi. Thanks, Craig!!!
      * Small fix to ctime (non-)handling in update detection under
        windows with fastcheck.
-
-   Changes since 2.17:
      * 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
@@ -433,13 +549,10 @@
      * Fixed potential deadlock when synchronizing between Windows and
        Unix
      * Small improvements:
-          + If neither the
-            tt USERPROFILE nor the
-            tt HOME environment variables are set, then Unison will put
-            its temporary commit log (called
-            tt DANGER.README) into the directory named by the
-            tt UNISON environment variable, if any; otherwise it will use
-            tt C:.
+          + If neither the USERPROFILE nor the HOME environment variables
+            are set, then Unison will put its temporary commit log
+            (called DANGER.README) into the directory named by the UNISON
+            environment variable, if any; otherwise it will use C:.
           + alternative set of values for fastcheck: yes = true; no =
             false; default = auto.
           + -silent implies -contactquietly
@@ -486,9 +599,8 @@
           + Paths that are not synchronized because of conflicts or
             errors during update detection are now noted in the log file.
           + [END] messages in log now use a briefer format
-          + Changed the text UI startup sequence so that
-            tt ./unison -ui text will use the default profile instead of
-            failing.
+          + Changed the text UI startup sequence so that ./unison -ui
+            text will use the default profile instead of failing.
           + Made some improvements to the error messages.
           + Added some debugging messages to remote.ml.
 

Modified: trunk/src/RECENTNEWS
===================================================================
--- trunk/src/RECENTNEWS	2010-02-17 13:06:38 UTC (rev 410)
+++ trunk/src/RECENTNEWS	2010-02-20 23:06:02 UTC (rev 411)
@@ -1,692 +1,10 @@
 CHANGES FROM VERSION 2.40.1
 
-* Bumped version number: incompatible protocol changes
+* Update documentation in preparation for beta-release
 
-* Ignore one-second differences when synchronizing modification time.
-  (Technically, this is an incompatible archive format change, but it
-   is backward compatible.  To trigger a problem, a user would have to
-   synchronize modification times on a filesystem with a two-second
-   granularity and then downgrade to a previous version of Unison,
-   which does not work well in such a case.  Thus, it does not
-   seem worthwhile to increment the archive format number, which would
-   impact all users.)
-
 -------------------------------
-CHANGES FROM VERSION 2.39.12
+CHANGES FROM VERSION 2.40.1
 
-* Mac OS: fixed rsync bug which could result in an "index out of bounds"
-  error when transferring resource forks.
+* Update documentation in preparation for beta-release
 
 -------------------------------
-CHANGES FROM VERSION 2.39.6
-
-* Fixed "assertion failed" error introduced in last commit...
-
--------------------------------
-CHANGES FROM VERSION 2.39.6
-
-* Fixed bug which made Unison ignore finder information and resource
-  fork when compiled to 64bit on Mac OSX.
-* Use asynchronous I/O under Windows
-
--------------------------------
-CHANGES FROM VERSION 2.39.6
-
-* Made a server waiting on a socket more resilient to unexpected
-  lost connections from the client.
-* Fixed possible race condition in half-duplex communication mode.
-* Minor other changes...
-
--------------------------------
-CHANGES FROM VERSION 2.39.6
-
-* Implemented 'partial' versions of 'noupdate', 'nodeletion' and 'nocreation'
-* Check sooner (before connecting to another machine) that the roots
-  given as argument to all these preference are well-formed
--------------------------------
-CHANGES FROM VERSION 2.39.4
-
-* New preferences "noupdate=root", "nodeletion=root", "nocreation=root"
-  that prevent Unison from performing files updates, deletions or
-  creations on the given root.
-* GTK UI: do not reload the preference file before a new update
-  detection if it is unchanged
-* Limit the number of simultaneous external copy program
-  ("copymax" preference)
-
--------------------------------
-CHANGES FROM VERSION 2.39.4
-
-* GTK UI:
-  - take into account the "height" preference again
-  - the internal list of selected reconciler item was not always in
-    sync with what was displayed (GTK bug?); workaround implemented
-* Do not display "Looking for change" messages during propagation
-  (when checking the targe is unchanged) but only during update detection
-* Now use an opaque datatype for file descriptors in Lwt
-
--------------------------------
-CHANGES FROM VERSION 2.39.0
-
-* Mac GUIs (NEED TESTING):
-  - use doubles rather than ints for file sizes to prevent overflows
-  - should now be 64 bit clean (the Growl framework is not up to date,
-    though)
-  - fixes from uimacnew09 copied back to uimacnew
-  - made the bridge between Objective C and Ocaml code GC friendly
-    (it was allocating ML values and putting them in an array which
-    was not registered with the GC)
-* Windows: only use long UNC path for accessing replicas (as '..' is
-  not handled with this format of paths, but can be useful)
-* Bumped fingerprint cache magic number (the format was changed in
-  revision 398)
-
--------------------------------
-CHANGES FROM VERSION 2.39.0
-
-* Back out some minimal support we'd added for checking out Unison sources via Bazaar.
-
-* Small fix for OSX GUI
-
-
-
--------------------------------
-CHANGES FROM VERSION 2.39.0
-
-* The "ignorearchives" preference now works.
-* When Unison detects that the archive case-sensitivity mode
-  does not match the current settings, it populates the fingerprint
-  cache using the archive contents.  This way, changing the
-  case-sensitivity mode should be reasonably fast.
-
--------------------------------
-CHANGES FROM VERSION 2.39.0
-
-* MacOS GUI:
-  - improved exception handling (untested code, might not even compile)
-
--------------------------------
-CHANGES FROM VERSION 2.39.0
-
-* Bumped version number: incompatible protocol changes
-
-* Resume copy of partially transferred files.
-* Unicode mode is now the default when one of the hosts is under
-  Windows or MacOS.  This may make upgrades a bit more painful (the
-  archives cannot be reused), but this is a much saner default.
-* Fastcheck is now the default under Windows.  People mostly use NTFS
-  nowadays and the Unicode API provides an equivalent to inode numbers
-  for this filesystem.
-* Unison now fails if in unicode case-insensitive mode but the archive
-  mode is not known (this means that we are upgrading from an older
-  version which did not support this mode)
-* Changed the type of trivalued preferences (true/false/default) to an
-  enumerated type
-* Removed the "reusewindows" preference, which was not used anymore.
-* GTK UI: do not reposition the file list on focus change
-
--------------------------------
-CHANGES FROM VERSION 2.38.5
-
-* Fix the fingerprint cache so that it works also with multiple paths
-
--------------------------------
-CHANGES FROM VERSION 2.38.5
-
-* GTK UI:
-  - do not reposition the file list when updating the detail view
-    anymore
-  - added Ctrl+Q as a shortcut for quitting besides just the key Q
-
--------------------------------
-CHANGES FROM VERSION 2.38.5
-
-* Implemented an on-disk file fingerprint cache to speed-up update
-  detection after a crash: this way, Unison does not have do recompute
-  all the file fingerprints from scratch.
-
--------------------------------
-CHANGES FROM VERSION 2.38.0
-
-* Roll back a previous "fix" for a permission-setting issue and
-  introduce a better one (as suggested by Jerome)
-
--------------------------------
-CHANGES FROM VERSION 2.38.0
-
-* GTK UI:
-  - revert to the previous action pixmaps
-  - made the progress bar slightly larger
-* MacOS GUI:
-  - use darker grey arrows (patch contributed by Eric Y. Kow)
-* Make STATIC=true kind of work again (though it is not possible to
-  make completely statically linked binaries with the glibc library)
-* Windows: added support for long UNC paths
-* Do not keep many files simultaneously opened anymore when the rsync
-  algorithm is in use
-* IPV6: properly deal with Unix errors, so that Unison correctly fall
-  backs to IPV4 if the kernel does not support IPV6
-
--------------------------------
-CHANGES FROM VERSION 2.38.0
-
-* Incorporated new version of OSX GUI with numerous improvements and
-  bugfixes by Markus Gross.  (Not compiling yet on my machine, though.)
-
--------------------------------
-CHANGES FROM VERSION 2.38.0
-
-* Small doc tweak in tutorial
-
-* Add preference to ignore existing archives (to avoid forcing users
-  to delete them manually, in situations where one archive has gotten
-  deleted or corrupted).
-
-* Small patch to property setting code suggested by Ulrich Gernkow.
-
-* Apply patch to fix some crashes in the OSX GUI, thanks to Onne Gorter.
-
-
--------------------------------
-CHANGES FROM VERSION 2.37.11
-
-* Fixed incompatible protocol change introduced in last commit
-  (the type of some preferences was changed)
-
--------------------------------
-CHANGES FROM VERSION 2.37.10
-
-* GTK UI:
-  - assistant for creating profiles
-  - profile editor
-
--------------------------------
-CHANGES FROM VERSION 2.37.5
-
-* Makefile tweak: don't complain if etags is not found (I hope I got my bash syntax right...)
-
--------------------------------
-CHANGES FROM VERSION 2.37.5
-
-* Transfer by rsync: fixed string token length overflow due to recent
-  changes in block size.
-
--------------------------------
-CHANGES FROM VERSION 2.37.5
-
-* Transfer by rsync algorithm: fix the hashtable size limit to be
-  below the maximum length of an array.
-
--------------------------------
-CHANGES FROM VERSION 2.37.5
-
-* GTK UI:
-  - pop up a summary window when the replicas are not fully
-    synchronized after transport
-  - always show the main window
-  - put a white border around pixmaps (arrows, ...) for better
-    contrast
-  - allow simultaneous selection of several items
-  - several other small tweaks...
-* Improved arguments to the external program used for copying large
-  files
-
--------------------------------
-CHANGES FROM VERSION 2.37.5
-
-* Windows text UI: now put the console into UTF-8 output mode.  This
-  is the right thing to do when in Unicode mode, and is no worse than
-  what we had previously otherwise (the console use some esoteric
-  encoding by default).  This only works when using a Unicode font
-  instead of the default raster font.
-* Windows text UI: put the terminal into raw mode
-* Incorrect paths ("path" directive) now result in an error update
-  item rather than a fatal error.
-* Ignore any BOM (byte-order mark) character at the beginning of
-  profile files (this character is produced by many tools under
-  Windows)
-
--------------------------------
-CHANGES FROM VERSION 2.37.1
-
-* Disabled the new directory fast check optimization under Windows, as
-  Windows does not update the directory modification time when a
-  directory contents changes on a FAT filesystem.
-* Use inode numbers in fast check mode when using the Windows Unicode
-  API or Cygwin
-* Do not print the "Connected [...]" message when both replicas are local
-
--------------------------------
-CHANGES FROM VERSION 2.37.1
-
-* Bumped version number: incompatible protocol changes
-
-* Create parent directories (with correct permissions) during
-  transport for paths which point to non-existent locations in the
-  destination replica.
-* Keep track of which file contents are being transferred, and delay
-  the transfer of a file when another file with the same contents is
-  currently being transferred.  This way, the second transfer can be
-  skipped and replaced by a local copy.
-* Changes to the implementation of the rsync algorithm:
-  - use longer blocks for large files (the size of a block is the
-    square root of the size of the file for large files);
-  - transmit less checksum information per block (we still have less
-    than one chance in a hundred million of transferring a file
-    incorrectly, and Unison will catch any transfer error when
-    fingerprinting the whole file)
-  - avoid transfer overhead (which was 4 bytes per block)
-  For a 1G file, the first optimization saves a factor 50 on the
-  amount of data transferred from the target to the source (blocks
-  are 32768 bytes rather than just 700 bytes).  The two other
-  optimizations save another factor of 2 (from 24 bytes per block
-  down to 10).
-
-* New "links" preference.  When set to false, Unison will report an
-  error on symlinks during update detection.  (This is the default
-  when one host is running Windows but not Cygwin.)  This is better
-  than failing during propagation.
-* Added a preference "halfduplex" to force half-duplex communication
-  with the server.  This may be useful on unreliable links (as a more
-  efficient alternative to "maxthreads = 1").
-* Renamed preference "pretendwin" to "ignoreinodenumbers" (an alias is
-  kept for backwards compatibility).
-* GTK UI: display estimated remaining time and transfer rate on the
-  progress bar
-* GTK UI: some polishing; in particular:
-  - stop statistics window updates when idle (save power on laptops)
-  - some ok and cancel buttons were in the wrong order
-
-* Added some support for making it easier to extend Unison without
-  breaking backwards compatibility.
-  - Possibility to mark a preference as local.  Such a preference is
-    propagated if possible but will not result in an error if it is
-    not found server-side.  This make it possible to add new
-    functionalities client-side without breaking compatibility.
-  - Added a function [Remove.commandAvailable] which tests whether a
-    command is available on a given root.
-* Removed hack in findUpdates that would update the archive in a
-  visible way for the sake of path translation: it is no longer
-  needed.
-
--------------------------------
-CHANGES FROM VERSION 2.36.-27
-
-* Performance improvement in Xferhint module.
-  Update this cache more accurately during transport.
-
--------------------------------
-CHANGES FROM VERSION 2.36.-27
-
-* Correction to previous fix: do not perform the optimization for
-  directories with ignored children *in the archive*. (The previous
-  fix was also rejecting directories with ignored children on disk,
-  which is way too conservative.)
-
--------------------------------
-CHANGES FROM VERSION 2.36.-27
-
-* Fixed small bug in new update detection optimization:
-  do not perform the optimization for directories with ignored
-  children in the archive.  Indeed, we cannot rely on the archive in
-  this case instead of reading the directory contents from the
-  filesystem (systematically pruning the ignored children from the
-  archive is too costly).
-
--------------------------------
-CHANGES FROM VERSION 2.36.-27
-
-* Experimental update detection optimization:
-  do not read the contents of unchanged directories
-* MyMap.map and MyMap.mapi now iterate in increasing order
-  (rather than in an unspecified way)
-
--------------------------------
-CHANGES FROM VERSION 2.36.-27
-
-* GTK UI: disabled scrolling to the first unfinished item during transport.
-  It goes way too fast when lot of small files are synchronized, and it
-  makes it impossible to browse the file list during transport.
-* Fixed computation of the amount of data to transfer: property updates
-  should count for zero.
-* Mac GUI: use Unicode.protect to ensure that all string displayed are
-  encoded in UTF-8.
-* In Unicode case-insensitive mode, use filenames in NFC normal form
-  when tranferring files
-* Added a property list at the end of the archive file.  This is a
-  better way to extend the format than the hack currently used to
-  store the case-sensitivity mode.
-
--------------------------------
-CHANGES FROM VERSION 2.36.-27
-
-* When a file transfer fails, turn off fastcheck for this file on the
-  next sync.
-* Limit the number of simultaneous transfer using rsync
-  (as the rsync algorithm can use a large amount of memory when
-   processing huge files)
-* Raise the number of concurrent threads, as there is not much reason
-  to leave it low anymore.
-
--------------------------------
-CHANGES FROM VERSION 2.36.-27
-
-* Clean-up in remote.ml
-* Dead-lock free flow control mechanism
-
--------------------------------
-CHANGES FROM VERSION 2.36.-27
-
-* Fixed bug with case insensitive mode on a case sensitive filesystem:
-  - if file "a/a" is created on one replica and directory "A" is
-    created on the other, the file failed to be synchronized the first
-    time Unison is run afterwards, as Unison uses the wrong path "a/a"
-    (if Unison is run again, the directories are in the archive, so
-     the right path is used);
-  - if file "a" appears on one replica and file "A" appears on the
-    other with a different contents, Unison was unable to synchronized
-    them.
-
--------------------------------
-CHANGES FROM VERSION 2.36.-27
-
-* Accurate computation of the amount of data to transfer
-* Accurate update of the amount of data transferred, including:
-  - when transferring by copying on the remote host
-  - when the file was already transferred to the remote host
-  - in case of errors
-* Text UI: list partially transferred directories in transfer summary
-  and use appropriate exit code (indicating that some files were skipped)
-* Improved error reporting when the destination is updated during
-  synchronization: Unison now tells which file has been updated, and how.
-* Fix include directive failure when the line ends by CRLF
-  (the CR was not removed)
-* Limit the length of temporary file names
-* Ignore errors when writing to the log file
-* Mac UI: some performance improvements
-* GTK UI: possibility to display errors in auxiliary detail window +
-  other small changes
-* Save archive after update detection when there is no archive on disk yet
-* GTK UI: Made restart work also when roots are given from the command line
-
--------------------------------
-CHANGES FROM VERSION 2.36.-27
-
-* Allow partial transfer of a directory when there was an error deep
-  inside this directory during update detection.  At the moment, this
-  is only activated with the text and GTK UIs, which have been
-  modified so that they show that the transfer is going to be partial
-  and so that they can display all errors.
-* Changed types Common.replicaContent and Common.replicas to use
-  records rather than tuples, as this is more readable and easier to
-  extend.
-
--------------------------------
-CHANGES FROM VERSION 2.36.-27
-
-* Bumped version number: incompatible protocol changes
-
-* Partial transfer of directories.  If an error occurs while
-  transferring a directory, the part transferred so far is copied into
-  place (and the archives are updated accordingly).
-  The "maxerrors" preference controls how many transfer error Unison
-  will accept before stopping the transfer of a directory (by default,
-  only one).  This makes it possible to transfer most of a directory
-  even if there are some errors.  Currently, only the first error is
-  reported by the GUIs.
-* Save a copy of a failed transfer only when the source file is
-  unchanged.
-* Function Trace.log is not called anymore from Copy.tryCopyMovedFile
-  as Trace.log performs a callback to the client inside a Lwt_unix.run
-  event loop, which introduces spurious synchronization between
-  threads.  Instead, the function returns a message which is sent back
-  to the client.
-* Code reorganization in files.ml/update.ml to minimize the number of
-  network roundtrips.
-
--------------------------------
-CHANGES FROM VERSION 2.35.-17
-
-* Various small changes
-
--------------------------------
-CHANGES FROM VERSION 2.35.-17
-
-* Use a better file name for keeping a copy of an incorrectly
-  transferred file.  In particular, this is now a temp filename, and
-  Unison will not try to propagate it next time it is run.
-* In function Stasher.backup, use Fspath.findWorkingDir to find the
-  right file to rename or delete, possibly following symlinks.
-* Uigtk2: relabelled "Restart" button to "Rescan"
-* Uigtk2: performance improvements
-* Don't get the home directory from environment variable HOME under
-  Windows (except for Cygwin binaries): we don't want the behavior of
-  Unison to depends on whether it is run from a Cygwin shell (where
-  HOME is set) or in any other way (where HOME is usually not set).
-* Unicode normalization: put characters in canonical order
-* Fixed recently introduced bug in Update.postCommitArchive
-* Uicommon: always reparse the command line when loading a profile
-  (not just the first time)
-
--------------------------------
-CHANGES FROM VERSION 2.35.-17
-
-* Properly deals with non-conformant AppleDouble files produced by Mac
-  OS X; for compatibility, produce AppleDouble files with the same
-  structure as the one produced by Mac OS X.
-* Fixed a bug that resulted in Unison missing ressource fork changes
-* Windows Unicode API: use hard links when available when commiting
-  the archive to disk
-
--------------------------------
-CHANGES FROM VERSION 2.35.-17
-
-* Fixed bug introduced during file transfer cleanup that could lead to
-  uncaught exceptions
-* Simplified function validate in myMap.ml
-* Mac OS: do not check filler contents in Apple Double files
-  (the spec says it should be all zeroes, but Mac OS sets it to
-   "Mac OS X        "...)
-* Use a hard link rather than a copy when possible for creating the
-  MainArch-files in Update.postCommitArchive
-* Remove duplicate calls to Stasher.stashCurrentVersion in update.ml
-  (as well as now unnecessary calls to Update.updateArchive in files.ml)
-
--------------------------------
-CHANGES FROM VERSION 2.35.-17
-
-* Fixed bug resulting in slow performances when transferring a file
-  using our rsync implementation from a 64-bit architecture to a
-  32-bit architecture.
-
--------------------------------
-CHANGES FROM VERSION 2.35.-17
-
-* Bumped minor version: many incompatible protocol changes
-
-* Message lengths are checksummed to guard against protocol corruption
-  (no more [Invalid_argument "String.create"])
-
-* Experimental streaming protocol for transferring file contents (can
-  be disabled by setting the directive "stream" to false): file
-  contents is transfered asynchronously (without waiting for a response
-  from the destination after each chunk sent) rather than using the
-  synchronous RPC mechanism.  As a consequence:
-  - Unison now transfers the contents of a single file at a time
-    (Unison used to transfer several contents simultaneously in order
-    to hide the connection latency.)
-  - the transfer of large files uses the full available bandwidth
-    and is not slowed done due to the connection latency anymore
-  - we get performance improvement for small files as well by
-    scheduling many files simultaneously (as scheduling a file for
-    transfer consume little ressource: it does not mean allocating a
-    large buffer anymore)
-
-* Improvement to the code for resuming directory transfers:
-  - if a file was not correctly transferred (or the source has been
-    modified since, with unchanged size), Unison performs a new
-    transfer rather than failing
-  - spurious files are deleted (this can happen if a file is deleted
-    on the source replica before resuming the transfer; not deleting
-    the file would result in it reappearing on the target replica)
-
-* More file transfer implementation cleanup.  In particular, the
-  "paranoid check" (checking whether the file has been correctly
-  transferred) is moved to copy.ml.  This way, one can avoid computing
-  a file fingerprint twice when a file is already transferred, and
-  when using the "transfer by copying" optimization.
-  The check of the source file is also moved to copy.ml, so if the
-  paranoid check fails, we can tell whether this is due to the source
-  file being modified.
-
--------------------------------
-CHANGES FROM VERSION 2.34.0
-
-* Improvement to the code for resuming directory transfers:
-  - make sure file information (permissions, ...) has been properly set
-    when using a previously transferred temp file
-  - make sure previously transferred directories are writable
-* Some cleanup in file transfer implementation
-* Got rid of all occurrences of "try ... with _ -> ..."
-* Removed ctime field from Fileinfo.t
-* Fixed bug in Lwt_unix.run which could make it fail with a Not_found
-  exception
-
--------------------------------
-CHANGES FROM VERSION 2.34.0
-
-* Fix to the Mac GUI: the bigarray library is now required
--------------------------------
-CHANGES FROM VERSION 2.34.0
-
-* Case sensitivity information put in the archive (in a backward
-  compatible way) and checked when the archive is loaded
-
--------------------------------
-CHANGES FROM VERSION 2.34.0
-
-* Fixed quotation of paths and names when writing to a preference file
-* Workaround for bug in new "select" implementation in Ocaml 3.11
-  (select fails with EPIPE error when monitoring a remotely closed
-   file descriptor)
-
--------------------------------
-CHANGES FROM VERSION 2.34.0
-
-* Windows Unicode API: when a file cannot be renamed due to a sharing
-  violation error or an access denied error, retry for up to 1 second,
-  in case the file is temporarily opened by an indexer or an anti-virus.
-
--------------------------------
-CHANGES FROM VERSION 2.34.0
-
-* Text UI: 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.
-* Text UI: 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.
-
--------------------------------
-CHANGES FROM VERSION 2.34.0
-
-* Got rid of the 16MiB marshalling limit by marshalling to a bigarray
-
--------------------------------
-CHANGES FROM VERSION 2.34.0
-
-* Use system dependant API for spawning processes.
-  (Unicode API under Windows.)
-* Fixed the bug with ssh not working when running unison from a cygwin
-  shell.
-* Move [protect] function (which converts a string to UTF-8 by keeping
-  all UTF-8 characters unchanged and considering all other characters
-  as ISO 8859-1 characters) from uigtk2.ml to unicode.ml, as it may be
-  useful for the other UIs.
-
--------------------------------
-CHANGES FROM VERSION 2.34.0
-
-* Small documentation fix suggested by mszsummer.
-
-
-
-
--------------------------------
-CHANGES FROM VERSION 2.34.0
-
-* Cleaned-up the Unicode selection logic
--------------------------------
-CHANGES FROM VERSION 2.34.0
-
-* Bumped minor version: incompatible protocol changes
-* The use of the Windows Unicode API is now controlled via the
-  "unicode" directive
-* Fixed bug in GTK UI: buttons could be incorrectly reenabled during
-  synchronization
-* Improved error message when trying to synchronize a symlink to a
-  Windows machine
-* Fixed compilation warnings in lwt_unix.ml and pty.c
-* Added some missing convertUnixErrorsToTransient
-
--------------------------------
-CHANGES FROM VERSION 2.33.2
-
-* Small documentation fix suggested by mszsummer.
-
-
-
-
--------------------------------
-CHANGES FROM VERSION 2.33.2
-
-* Added an abstraction layer over Unix/Sys modules in order to be able
-  to redefine all system calls involving filenames
-* Implemented corresponding bindings for the Windows Unicode API
-  (not activated by default yet)
-* Uses improved emulation of "select" call provided by Ocaml 3.11
-  under Windows (the GUI should not freeze as much during synchronization)
-
--------------------------------
-CHANGES FROM VERSION 2.33.2
-
-* Fixed predicate matching in Unicode case-insensitive mode
-
--------------------------------
-CHANGES FROM VERSION 2.33.2
-
-* Improved error messages when rejecting non-unicode encoded file names
-* uigtk2: fixed the code for transcoding from Windows Codepage 1252 to
-  UTF-8 (for some reason, I mistakenly took a table corresponding to
-  Codepage 1250 instead)
-* Windows: added icons with transparency
-
--------------------------------
-CHANGES FROM VERSION 2.33.2
-
-* Incorporate Makefile improvements from Martin von Gagern
-
--------------------------------
-CHANGES FROM VERSION 2.33.1
-
-* Incorporate recent change from 2.32 branch.
-
-
--------------------------------
-CHANGES FROM VERSION 2.33.-4
-
-* Updated list of bad Windows file names following the MSDN
-  documentation (in particular, files with trailing dots are now
-  rejected when synchronizing with a Windows machine)
-* Experimental Unicode-aware case insensitive mode.  It is activated
-  when the preference "unicode" is set to true and Unison is in
-  case-insensitive mode.
-* Bumped version number to reflect the newly added preference
-
--------------------------------
-CHANGES FROM VERSION 2.32.7
-
-* Move descriptions of recent changes to documentation.
-
-
--------------------------------

Modified: trunk/src/mkProjectInfo.ml
===================================================================
--- trunk/src/mkProjectInfo.ml	2010-02-17 13:06:38 UTC (rev 410)
+++ trunk/src/mkProjectInfo.ml	2010-02-20 23:06:02 UTC (rev 411)
@@ -102,3 +102,5 @@
 
 
 
+
+

Modified: trunk/src/strings.ml
===================================================================
--- trunk/src/strings.ml	2010-02-17 13:06:38 UTC (rev 410)
+++ trunk/src/strings.ml	2010-02-20 23:06:02 UTC (rev 411)
@@ -4,7 +4,7 @@
 let docs =
     ("about", ("About Unison", 
      "Unison File Synchronizer\n\
-      Version 2.32.7\n\
+      Version 2.40.1\n\
       \n\
       "))
 ::
@@ -397,6 +397,9 @@
       \032  to tell next time what has changed.) Type:\n\
       \032      unison a.tmp b.tmp\n\
       \n\
+      \032  (You may need to add -ui text, depending how your unison binary was\n\
+      \032  built.)\n\
+      \n\
       \032  Textual Interface:\n\
       \032    * You should see a message notifying you that all the files are\n\
       \032      actually equal and then get returned to the command line.\n\
@@ -425,7 +428,7 @@
       \n\
       \032  indicates that the file c has been modified only in the second\n\
       \032  replica, and that the default action is therefore to propagate the new\n\
-      \032  version to the first replica. To follw Unison's recommendation, press\n\
+      \032  version to the first replica. To follow Unison's recommendation, press\n\
       \032  the \"f\" at the prompt.\n\
       \n\
       \032  If both replicas are modified and their contents are different, then\n\
@@ -442,7 +445,7 @@
       \n\
       \032  These display conventions are used by both versions of the user\n\
       \032  interface. The only difference lies in the way in which Unison's\n\
-      \032  default actions are either accepted or overriden by the user.\n\
+      \032  default actions are either accepted or overridden by the user.\n\
       \n\
       \032  Textual Interface:\n\
       \032    * The status of each modified file is displayed, in turn. When the\n\
@@ -1059,7 +1062,7 @@
       \032  A more powerful way of changing archive names is provided by the\n\
       \032  rootalias preference. The preference file may contain any number of\n\
       \032  lines of the form:\n\
-      \032   rootalias = //hostnameA//path-to-replicaA -> //hostnameB//path-to-replicaB\n\
+      \032   rootalias = //hostnameA//path-to-replicaA -> //hostnameB/path-to-replicaB\n\
       \n\
       \032  When calculating the name of the archive files for a given pair of\n\
       \032  roots, Unison replaces any root that matches the left-hand side of any\n\
@@ -1067,8 +1070,11 @@
       \n\
       \032  So, if you need to relocate a root on one of the hosts, you can add a\n\
       \032  rule of the form:\n\
-      \032   rootalias = //new-hostname//new-path -> //old-hostname//old-path\n\
+      \032   rootalias = //new-hostname//new-path -> //old-hostname/old-path\n\
       \n\
+      \032  Note that root aliases are case-sensitive, even on case-insensitive\n\
+      \032  file systems.\n\
+      \n\
       \032  Warning: The rootalias option is dangerous and should only be used if\n\
       \032  you are sure you know what you're doing. In particular, it should only\n\
       \032  be used if you are positive that either (1) both the original root and\n\
@@ -1115,15 +1121,15 @@
       \032-auto              automatically accept default (nonconflicting) actions\n\
       \032-batch             batch mode: ask no questions at all\n\
       \032-doc xxx           show documentation ('-doc topics' lists topics)\n\
-      \032-follow xxx        add a pattern to the follow list\n\
-      \032-force xxx         force changes from this replica to the other\n\
       \032-group             synchronize group attributes\n\
       \032-ignore xxx        add a pattern to the ignore list\n\
       \032-ignorenot xxx     add a pattern to the ignorenot list\n\
+      \032-nocreation xxx    prevent file creations on one replica\n\
+      \032-nodeletion xxx    prevent file deletions on one replica\n\
+      \032-noupdate xxx      prevent file updates and deletions on one replica\n\
       \032-owner             synchronize owner\n\
       \032-path xxx          path to synchronize\n\
       \032-perms n           part of the permissions which is synchronized\n\
-      \032-prefer xxx        choose this replica's version for conflicting changes\n\
       \032-root xxx          root of a replica (should be used exactly twice)\n\
       \032-silent            print nothing except error messages\n\
       \032-terse             suppress status messages\n\
@@ -1146,35 +1152,48 @@
       \032-confirmbigdel     ask about whole-replica (or path) deletes (default true)\n\
       \032-confirmmerge      ask for confirmation before commiting results of a merge\n\
       \032-contactquietly    suppress the 'contacting server' message during startup\n\
+      \032-copymax n         maximum number of simultaneous copyprog transfers\n\
       \032-copyprog xxx      external program for copying large files\n\
       \032-copyprogrest xxx  variant of copyprog for resuming partial transfers\n\
       \032-copyquoterem xxx  add quotes to remote file name for copyprog (true/false/def\n\
       ault)\n\
       \032-copythreshold n   use copyprog on files bigger than this (if >=0, in Kb)\n\
       \032-debug xxx         debug module xxx ('all' -> everything, 'verbose' -> more)\n\
-      \032-diff xxx          command for showing differences between files\n\
-      \032-dontchmod         When set, never use the chmod system call\n\
-      \032-dumbtty           do not change terminal settings in text UI\n\
+      \032-diff xxx          set command for showing differences between files\n\
+      \032-dontchmod         when set, never use the chmod system call\n\
+      \032-dumbtty           do not change terminal settings in text UI (default true)\n\
       \032-fastcheck xxx     do fast update detection (true/false/default)\n\
+      \032-follow xxx        add a pattern to the follow list\n\
+      \032-force xxx         force changes from this replica to the other\n\
       \032-forcepartial xxx  add a pattern to the forcepartial list\n\
+      \032-halfduplex        force half-duplex communication with the server\n\
       \032-height n          height (in lines) of main window in graphical interface\n\
       \032-host xxx          bind the socket to this host name in server socket mode\n\
+      \032-ignorearchives    ignore existing archive files\n\
       \032-ignorecase xxx    identify upper/lowercase filenames (true/false/default)\n\
+      \032-ignoreinodenumbers ignore inode number changes when detecting updates\n\
       \032-ignorelocks       ignore locks left over from previous run (dangerous!)\n\
       \032-immutable xxx     add a pattern to the immutable list\n\
       \032-immutablenot xxx  add a pattern to the immutablenot list\n\
       \032-key xxx           define a keyboard shortcut for this profile (in some UIs)\n\
       \032-killserver        kill server when done (even when using sockets)\n\
       \032-label xxx         provide a descriptive string label for this profile\n\
+      \032-links xxx         allow the synchronization of symbolic links (true/false/def\n\
+      ault)\n\
       \032-log               record actions in logfile (default true)\n\
       \032-logfile xxx       logfile name\n\
       \032-maxbackups n      number of backed up versions of a file\n\
+      \032-maxerrors n       maximum number of errors before a directory transfer is abo\n\
+      rted\n\
       \032-maxthreads n      maximum number of simultaneous file transfers\n\
       \032-merge xxx         add a pattern to the merge list\n\
       \032-mountpoint xxx    abort if this path does not exist\n\
+      \032-nocreationpartial xxx add a pattern to the nocreationpartial list\n\
+      \032-nodeletionpartial xxx add a pattern to the nodeletionpartial list\n\
+      \032-noupdatepartial xxx add a pattern to the noupdatepartial list\n\
       \032-numericids        don't map uid/gid values by user/group names\n\
+      \032-prefer xxx        choose this replica's version for conflicting changes\n\
       \032-preferpartial xxx add a pattern to the preferpartial list\n\
-      \032-pretendwin        Use creation times for detecting updates\n\
       \032-repeat xxx        synchronize repeatedly (text interface only)\n\
       \032-retry n           re-try failed synchronizations N times (text ui only)\n\
       \032-rootalias xxx     register alias for canonical root names\n\
@@ -1190,7 +1209,10 @@
       \032-sortnewfirst      list new before changed files\n\
       \032-sshargs xxx       other arguments (if any) for remote shell command\n\
       \032-sshcmd xxx        path to the ssh executable\n\
+      \032-stream            use a streaming protocol for transferring file contents (de\n\
+      fault true)\n\
       \032-ui xxx            select UI ('text' or 'graphic'); command-line only\n\
+      \032-unicode xxx       assume Unicode encoding in case insensitive mode\n\
       \032-xferbycopying     optimize transfers using local copies (default true)\n\
       \n\
       \032  Here, in more detail, is what they do. Many are discussed in greater\n\
@@ -1252,7 +1274,7 @@
       \032         or regular expressions that should not be backed up, even if\n\
       \032         the backup preference selects them--i.e., it selectively\n\
       \032         overrides backup. The same caveats apply here as with ignore\n\
-      \032         and t ignorenot.\n\
+      \032         and ignorenot.\n\
       \032  backupprefix xxx\n\
       \032         When a backup for a file NAME is created, it is stored in a\n\
       \032         directory specified by backuplocation, in a file called\n\
@@ -1281,7 +1303,7 @@
       \032         questions at all. Non-conflicting changes will be propagated;\n\
       \032         conflicts will be skipped.\n\
       \032  confirmbigdel \n\
-      \032         !When this is set to true, Unison will request an extra\n\
+      \032         When this is set to true, Unison will request an extra\n\
       \032         confirmation if it appears that the entire replica has been\n\
       \032         deleted, before propagating the change. If the batch flag is\n\
       \032         also set, synchronization will be aborted. When the path\n\
@@ -1300,6 +1322,9 @@
       \032         If this flag is set, Unison will skip displaying the\n\
       \032         `Contacting server' message (which some users find annoying)\n\
       \032         during startup.\n\
+      \032  copymax n\n\
+      \032         A number indicating how many instances of the external copying\n\
+      \032         utility Unison is allowed to run simultaneously (default to 1).\n\
       \032  copyprog xxx\n\
       \032         A string giving the name of an external program that can be\n\
       \032         used to copy large files efficiently (plus command-line\n\
@@ -1391,18 +1416,15 @@
       \032         reasonable to use this switch under Windows most of the time\n\
       \032         and occasionally run Unison once with fastcheck set to false,\n\
       \032         if you are worried that Unison may have overlooked an update.\n\
-      \032         The default value of the preference is auto, which causes\n\
-      \032         Unison to use fast checking on Unix replicas (where it is safe)\n\
-      \032         and slow checking on Windows replicas. For backward\n\
-      \032         compatibility, yes, no, and default can be used in place of\n\
-      \032         true, false, and auto. See the section \"Fast Checking\" for more\n\
-      \032         information.\n\
+      \032         For backward compatibility, yes, no, and default can be used in\n\
+      \032         place of true, false, and auto. See the section \"Fast Checking\"\n\
+      \032         for more information.\n\
       \032  follow xxx\n\
       \032         Including the preference -follow pathspec causes Unison to\n\
       \032         treat symbolic links matching pathspec as `invisible' and\n\
       \032         behave as if the object pointed to by the link had appeared\n\
       \032         literally at this position in the replica. See the section\n\
-      \032         \"Symbolic Links\" for more details. The syntax of pathspec> is\n\
+      \032         \"Symbolic Links\" for more details. The syntax of pathspec is\n\
       \032         described in the section \"Path Specification\" .\n\
       \032  force xxx\n\
       \032         Including the preference -force root causes Unison to resolve\n\
@@ -1416,7 +1438,7 @@
       \032         This preference should be used only if you are sure you know\n\
       \032         what you are doing!\n\
       \032  forcepartial xxx\n\
-      \032         Including the preference forcepartial PATHSPEC -> root causes\n\
+      \032         Including the preference forcepartial = PATHSPEC -> root causes\n\
       \032         Unison to resolve all differences (even non-conflicting\n\
       \032         changes) in favor of root for the files in PATHSPEC (see the\n\
       \032         section \"Path Specification\" for more information). This\n\
@@ -1431,7 +1453,16 @@
       \032  group \n\
       \032         When this flag is set to true, the group attributes of the\n\
       \032         files are synchronized. Whether the group names or the group\n\
-      \032         identifiers are synchronizeddepends on the preference numerids.\n\
+      \032         identifiers are synchronized depends on the preference\n\
+      \032         numerids.\n\
+      \032  halfduplex \n\
+      \032         When this flag is set to true, Unison network communication is\n\
+      \032         forced to be half duplex (the client and the server never\n\
+      \032         simultaneously emit data). If you experience unstabilities with\n\
+      \032         your network link, this may help. The communication is always\n\
+      \032         half-duplex when synchronizing with a Windows machine due to a\n\
+      \032         limitation of Unison current implementation that could result\n\
+      \032         in a deadlock.\n\
       \032  height n\n\
       \032         Used to set the height (in lines) of the main window in the\n\
       \032         graphical user interface.\n\
@@ -1442,6 +1473,11 @@
       \032         files, object files, etc. The syntax of pathspec is described\n\
       \032         in the section \"Path Specification\" , and further details on\n\
       \032         ignoring paths is found in the section \"Ignoring Paths\" .\n\
+      \032  ignorearchives \n\
+      \032         When this preference is set, Unison will ignore any existing\n\
+      \032         archive files and behave as though it were being run for the\n\
+      \032         first time on these replicas. It is not a good idea to set this\n\
+      \032         option in a profile: it is intended for command-line use.\n\
       \032  ignorecase xxx\n\
       \032         When set to true, this flag causes Unison to treat filenames as\n\
       \032         case insensitive--i.e., files in the two replicas whose names\n\
@@ -1453,6 +1489,13 @@
       \032         rare circumstances it is useful to set the flag manually (e.g.\n\
       \032         when running Unison on a Unix system with a FAT [Windows]\n\
       \032         volume mounted).\n\
+      \032  ignoreinodenumbers \n\
+      \032         When set to true, this preference makes Unison not take\n\
+      \032         advantage of inode numbers during fast update detection. This\n\
+      \032         switch should be used with care, as it is less safe than the\n\
+      \032         standard update detection method, but it can be useful for\n\
+      \032         synchronizing VFAT filesystems (which do not support inode\n\
+      \032         numbers) mounted on Unix systems.\n\
       \032  ignorelocks \n\
       \032         When this preference is set, Unison will ignore any lock files\n\
       \032         that may have been left over from a previous run of Unison that\n\
@@ -1479,7 +1522,7 @@
       \032         means that, if some parent of a given path matches an ignore\n\
       \032         pattern, then it will be skipped even if the path itself\n\
       \032         matches an ignorenot pattern. In particular, putting ignore =\n\
-      \032         Path * in your profile and then using t ignorenot to select\n\
+      \032         Path * in your profile and then using ignorenot to select\n\
       \032         particular paths to be synchronized will not work. Instead, you\n\
       \032         should use the path preference to choose particular paths to\n\
       \032         synchronize.\n\
@@ -1510,6 +1553,15 @@
       \032         its settings. (This is useful for users that switch between\n\
       \032         several profiles, especially using the `fast switch' feature of\n\
       \032         the graphical user interface.)\n\
+      \032  links xxx\n\
+      \032         When set to true, this flag causes Unison to synchronize\n\
+      \032         symbolic links. When the flag is set to false, symbolic links\n\
+      \032         will result in an error during update detection. Ordinarily,\n\
+      \032         when the flag is set to default, symbolic links are\n\
+      \032         synchronized except when one of the hosts is running Windows.\n\
+      \032         In rare circumstances it is useful to set the flag manually\n\
+      \032         (e.g. when running Unison on a Unix system with a FAT [Windows]\n\
+      \032         volume mounted).\n\
       \032  log \n\
       \032         When this flag is set, Unison will log all changes to the\n\
       \032         filesystems on a file.\n\
@@ -1521,13 +1573,22 @@
       \032         This preference specifies the number of backup versions that\n\
       \032         will be kept by unison, for each path that matches the\n\
       \032         predicate backup. The default is 2.\n\
+      \032  maxerrors n\n\
+      \032         This preference controls after how many errors Unison aborts a\n\
+      \032         directory transfer. Setting it to a large number allows Unison\n\
+      \032         to transfer most of a directory even when some files fail to be\n\
+      \032         copied. The default is 1. If the preference is set too high,\n\
+      \032         Unison may take a long time to abort in case of repeated\n\
+      \032         failures (for instance, when the disk is full).\n\
       \032  maxthreads n\n\
       \032         This preference controls how much concurrency is allowed during\n\
       \032         the transport phase. Normally, it should be set reasonably high\n\
-      \032         (default is 20) to maximize performance, but when Unison is\n\
-      \032         used over a low-bandwidth link it may be helpful to set it\n\
-      \032         lower (e.g. to 1) so that Unison doesn't soak up all the\n\
-      \032         available bandwidth.\n\
+      \032         to maximize performance, but when Unison is used over a\n\
+      \032         low-bandwidth link it may be helpful to set it lower (e.g. to\n\
+      \032         1) so that Unison doesn't soak up all the available bandwidth.\n\
+      \032         The default is the special value 0, which mean 20 threads when\n\
+      \032         file content streaming is desactivated and 1000 threads when it\n\
+      \032         is activated.\n\
       \032  merge xxx\n\
       \032         This preference can be used to run a merge program which will\n\
       \032         create a new version for each of the files and the backup, with\n\
@@ -1542,6 +1603,36 @@
       \032         and abort if it does not. This is useful when Unison is used to\n\
       \032         synchronize removable media. This preference can be given more\n\
       \032         than once. See the section \"Mount Points\" .\n\
+      \032  nocreation xxx\n\
+      \032         Including the preference -nocreation root prevents Unison from\n\
+      \032         performing any file creation on root root.\n\
+      \032         This preference can be included twice, once for each root, if\n\
+      \032         you want to prevent any creation.\n\
+      \032  nocreationpartial xxx\n\
+      \032         Including the preference nocreationpartial = PATHSPEC -> root\n\
+      \032         prevents Unison from performing any file creation in PATHSPEC\n\
+      \032         on root root (see the section \"Path Specification\" for more\n\
+      \032         information).\n\
+      \032  nodeletion xxx\n\
+      \032         Including the preference -nodeletion root prevents Unison from\n\
+      \032         performing any file deletion on root root.\n\
+      \032         This preference can be included twice, once for each root, if\n\
+      \032         you want to prevent any creation.\n\
+      \032  nodeletionpartial xxx\n\
+      \032         Including the preference nodeletionpartial = PATHSPEC -> root\n\
+      \032         prevents Unison from performing any file deletion in PATHSPEC\n\
+      \032         on root root (see the section \"Path Specification\" for more\n\
+      \032         information).\n\
+      \032  noupdate xxx\n\
+      \032         Including the preference -noupdate root prevents Unison from\n\
+      \032         performing any file update or deletion on root root.\n\
+      \032         This preference can be included twice, once for each root, if\n\
+      \032         you want to prevent any update.\n\
+      \032  noupdatepartial xxx\n\
+      \032         Including the preference noupdatepartial = PATHSPEC -> root\n\
+      \032         prevents Unison from performing any file update or deletion in\n\
+      \032         PATHSPEC on root root (see the section \"Path Specification\" for\n\
+      \032         more information).\n\
       \032  numericids \n\
       \032         When this flag is set to true, groups and users are\n\
       \032         synchronized numerically, rather than by name.\n\
@@ -1550,8 +1641,7 @@
       \032  owner \n\
       \032         When this flag is set to true, the owner attributes of the\n\
       \032         files are synchronized. Whether the owner names or the owner\n\
-      \032         identifiers are synchronizeddepends on the preference\n\
-      \032         extttnumerids.\n\
+      \032         identifiers are synchronizeddepends on the preference numerids.\n\
       \032  path xxx\n\
       \032         When no path preference is given, Unison will simply\n\
       \032         synchronize the two entire replicas, beginning from the given\n\
@@ -1576,23 +1666,14 @@
       \032         This preference should be used only if you are sure you know\n\
       \032         what you are doing!\n\
       \032  preferpartial xxx\n\
-      \032         Including the preference preferpartial PATHSPEC -> root causes\n\
-      \032         Unison always to resolve conflicts in favor of root, rather\n\
-      \032         than asking for guidance from the user, for the files in\n\
+      \032         Including the preference preferpartial = PATHSPEC -> root\n\
+      \032         causes Unison always to resolve conflicts in favor of root,\n\
+      \032         rather than asking for guidance from the user, for the files in\n\
       \032         PATHSPEC (see the section \"Path Specification\" for more\n\
       \032         information). (The syntax of root is the same as for the root\n\
       \032         preference, plus the special values newer and older.)\n\
       \032         This preference should be used only if you are sure you know\n\
       \032         what you are doing!\n\
-      \032  pretendwin \n\
-      \032         When set to true, this preference makes Unison use\n\
-      \032         Windows-style fast update detection (using file creation times\n\
-      \032         as \"pseudo-inode-numbers\"), even when running on a Unix system.\n\
-      \032         This switch should be used with care, as it is less safe than\n\
-      \032         the standard update detection method, but it can be useful for\n\
-      \032         synchronizing VFAT filesystems (which do not support inode\n\
-      \032         numbers) mounted on Unix systems. The fastcheck option should\n\
-      \032         also be set to true.\n\
       \032  repeat xxx\n\
       \032         Setting this preference causes the text-mode interface to\n\
       \032         synchronize repeatedly, rather than doing it just once and\n\
@@ -1708,6 +1789,10 @@
       \032         just ssh to invoke ssh. The default value is empty, which will\n\
       \032         make unison use whatever version of ssh is installed as the\n\
       \032         default `ssh' command.\n\
+      \032  stream \n\
+      \032         When this preference is set, Unison will use an experimental\n\
+      \032         streaming protocol for transferring file contents more\n\
+      \032         efficiently. The default value is true.\n\
       \032  terse \n\
       \032         When this preference is set to true, the user interface will\n\
       \032         not print status messages.\n\
@@ -1728,6 +1813,9 @@
       \032         If the Unison executable was compiled with only a textual\n\
       \032         interface, this option has no effect. (The pre-compiled\n\
       \032         binaries are all compiled with both interfaces available.)\n\
+      \032  unicode xxx\n\
+      \032         When set to true, this flag causes Unison to perform case\n\
+      \032         insensitive file comparisons assuming Unicode encoding\n\
       \032  version \n\
       \032         Print the current version number and exit. (This option only\n\
       \032         makes sense on the command line.)\n\
@@ -2582,9 +2670,195 @@
       \n\
       "))
 ::
-    ("news", ("Changes in Version 2.32.7", 
-     "Changes in Version 2.32.7\n\
+    ("news", ("Changes in Version 2.40.1", 
+     "Changes in Version 2.40.1\n\
       \n\
+      \032  Changes since 2.32:\n\
+      \032    * Major enhancement: Unicode support.\n\
+      \032         + Unison should now handle unicode filenames correctly on all\n\
+      \032           platforms.\n\
+      \032         + This functionality is controlled by a new preference unicode.\n\
+      \032         + Unicode mode is now the default when one of the hosts is\n\
+      \032           under Windows or MacOS. This may make upgrades a bit more\n\
+      \032           painful (the archives cannot be reused), but this is a much\n\
+      \032           saner default.\n\
+      \032    * Partial transfer of directories. If an error occurs while\n\
+      \032      transferring a directory, the part transferred so far is copied\n\
+      \032      into place (and the archives are updated accordingly). The\n\
+      \032      \"maxerrors\" preference controls how many transfer error Unison\n\
+      \032      will accept before stopping the transfer of a directory (by\n\
+      \032      default, only one). This makes it possible to transfer most of a\n\
+      \032      directory even if there are some errors. Currently, only the first\n\
+      \032      error is reported by the GUIs.\n\
+      \032      Also, allow partial transfer of a directory when there was an\n\
+      \032      error deep inside this directory during update detection. At the\n\
+      \032      moment, this is only activated with the text and GTK UIs, which\n\
+      \032      have been modified so that they show that the transfer is going to\n\
+      \032      be partial and so that they can display all errors.\n\
+      \032    * Improvement to the code for resuming directory transfers:\n\
+      \032         + if a file was not correctly transferred (or the source has\n\
+      \032           been modified since, with unchanged size), Unison performs a\n\
+      \032           new transfer rather than failing\n\
+      \032         + spurious files are deleted (this can happen if a file is\n\
+      \032           deleted on the source replica before resuming the transfer;\n\
+      \032           not deleting the file would result in it reappearing on the\n\
+      \032           target replica)\n\
+      \032    * Experimental streaming protocol for transferring file contents\n\
+      \032      (can be disabled by setting the directive \"stream\" to false): file\n\
+      \032      contents is transfered asynchronously (without waiting for a\n\
+      \032      response from the destination after each chunk sent) rather than\n\
+      \032      using the synchronous RPC mechanism. As a consequence:\n\
+      \032         + Unison now transfers the contents of a single file at a time\n\
+      \032           (Unison used to transfer several contents simultaneously in\n\
+      \032           order to hide the connection latency.)\n\
+      \032         + the transfer of large files uses the full available bandwidth\n\
+      \032           and is not slowed done due to the connection latency anymore\n\
+      \032         + we get performance improvement for small files as well by\n\
+      \032           scheduling many files simultaneously (as scheduling a file\n\
+      \032           for transfer consume little ressource: it does not mean\n\
+      \032           allocating a large buffer anymore)\n\
+      \032    * Changes to the internal implementation of the rsync algorithm:\n\
+      \032         + use longer blocks for large files (the size of a block is the\n\
+      \032           square root of the size of the file for large files);\n\
+      \032         + transmit less checksum information per block (we still have\n\
+      \032           less than one chance in a hundred million of transferring a\n\
+      \032           file incorrectly, and Unison will catch any transfer error\n\
+      \032           when fingerprinting the whole file)\n\
+      \032         + avoid transfer overhead (which was 4 bytes per block)\n\
+      \032      For a 1G file, the first optimization saves a factor 50 on the\n\
+      \032      amount of data transferred from the target to the source (blocks\n\
+      \032      are 32768 bytes rather than just 700 bytes). The two other\n\
+      \032      optimizations save another factor of 2 (from 24 bytes per block\n\
+      \032      down to 10).\n\
+      \032    * Implemented an on-disk file fingerprint cache to speed-up update\n\
+      \032      detection after a crash: this way, Unison does not have do\n\
+      \032      recompute all the file fingerprints from scratch.\n\
+      \032         + When Unison detects that the archive case-sensitivity mode\n\
+      \032           does not match the current settings, it populates the\n\
+      \032           fingerprint cache using the archive contents. This way,\n\
+      \032           changing the case-sensitivity mode should be reasonably fast.\n\
+      \032    * Resume copy of partially transferred files.\n\
+      \032    * New preferences \"noupdate=root\", \"nodeletion=root\",\n\
+      \032      \"nocreation=root\" that prevent Unison from performing files\n\
+      \032      updates, deletions or creations on the given root. Also 'partial'\n\
+      \032      versions of 'noupdate', 'nodeletion' and 'nocreation'\n\
+      \032    * Limit the number of simultaneous external copy program (\"copymax\"\n\
+      \032      preference)\n\
+      \032    * New \"links\" preference. When set to false, Unison will report an\n\
+      \032      error on symlinks during update detection. (This is the default\n\
+      \032      when one host is running Windows but not Cygwin.) This is better\n\
+      \032      than failing during propagation.\n\
+      \032    * Added a preference \"halfduplex\" to force half-duplex communication\n\
+      \032      with the server. This may be useful on unreliable links (as a more\n\
+      \032      efficient alternative to \"maxthreads = 1\").\n\
+      \032    * Renamed preference \"pretendwin\" to \"ignoreinodenumbers\" (an alias\n\
+      \032      is kept for backwards compatibility).\n\
+      \032    * Ignore one-second differences when synchronizing modification\n\
+      \032      time. (Technically, this is an incompatible archive format change,\n\
+      \032      but it is backward compatible. To trigger a problem, a user would\n\
+      \032      have to synchronize modification times on a filesystem with a\n\
+      \032      two-second granularity and then downgrade to a previous version of\n\
+      \032      Unison, which does not work well in such a case. Thus, it does not\n\
+      \032      seem worthwhile to increment the archive format number, which\n\
+      \032      would impact all users.)\n\
+      \032    * Do not keep many files simultaneously opened anymore when the\n\
+      \032      rsync algorithm is in use.\n\
+      \032    * Add \"ignorearchives\" preference to ignore existing archives (to\n\
+      \032      avoid forcing users to delete them manually, in situations where\n\
+      \032      one archive has gotten deleted or corrupted).\n\
+      \032    * Mac OS\n\
+      \032         + fixed rsync bug which could result in an \"index out of\n\
+      \032           bounds\" error when transferring resource forks.\n\
+      \032         + Fixed bug which made Unison ignore finder information and\n\
+      \032           resource fork when compiled to 64bit on Mac OSX.\n\
+      \032         + should now be 64 bit clean (the Growl framework is not up to\n\
+      \032           date, though)\n\
+      \032         + Made the bridge between Objective C and Ocaml code GC\n\
+      \032           friendly (it was allocating ML values and putting them in an\n\
+      \032           array which was not registered with the GC)\n\
+      \032         + use darker grey arrows (patch contributed by Eric Y. Kow)\n\
+      \032    * GTK user interface\n\
+      \032         + assistant for creating profiles\n\
+      \032         + profile editor\n\
+      \032         + pop up a summary window when the replicas are not fully\n\
+      \032           synchronized after transport\n\
+      \032         + display estimated remaining time and transfer rate on the\n\
+      \032           progress bar\n\
+      \032         + allow simultaneous selection of several items\n\
+      \032         + Do not reload the preference file before a new update\n\
+      \032           detection if it is unchanged\n\
+      \032         + disabled scrolling to the first unfinished item during\n\
+      \032           transport. It goes way too fast when lot of small files are\n\
+      \032           synchronized, and it makes it impossible to browse the file\n\
+      \032           list during transport.\n\
+      \032         + take into account the \"height\" preference again\n\
+      \032         + the internal list of selected reconciler item was not always\n\
+      \032           in sync with what was displayed (GTK bug?); workaround\n\
+      \032           implemented\n\
+      \032         + Do not display \"Looking for change\" messages during\n\
+      \032           propagation (when checking the targe is unchanged) but only\n\
+      \032           during update detection\n\
+      \032         + Apply patch to fix some crashes in the OSX GUI, thanks to\n\
+      \032           Onne Gorter.\n\
+      \032    * Text UI\n\
+      \032         + During update detection, display status by updating a single\n\
+      \032           line rather than generating a new line of output every so\n\
+      \032           often. Should be less confusing.\n\
+      \032    * Windows\n\
+      \032         + Fastcheck is now the default under Windows. People mostly use\n\
+      \032           NTFS nowadays and the Unicode API provides an equivalent to\n\
+      \032           inode numbers for this filesystem.\n\
+      \032         + Only use long UNC path for accessing replicas (as '..' is not\n\
+      \032           handled with this format of paths, but can be useful)\n\
+      \032         + Windows text UI: now put the console into UTF-8 output mode.\n\
+      \032           This is the right thing to do when in Unicode mode, and is no\n\
+      \032           worse than what we had previously otherwise (the console use\n\
+      \032           some esoteric encoding by default). This only works when\n\
+      \032           using a Unicode font instead of the default raster font.\n\
+      \032         + Don't get the home directory from environment variable HOME\n\
+      \032           under Windows (except for Cygwin binaries): we don't want the\n\
+      \032           behavior of Unison to depends on whether it is run from a\n\
+      \032           Cygwin shell (where HOME is set) or in any other way (where\n\
+      \032           HOME is usually not set).\n\
+      \032    * Miscellaneous fixes and improvements\n\
+      \032         + Made a server waiting on a socket more resilient to\n\
+      \032           unexpected lost connections from the client.\n\
+      \032         + Small patch to property setting code suggested by Ulrich\n\
+      \032           Gernkow.\n\
+      \032         + Several fixes to the change transfer functions (both the\n\
+      \032           internal ones and external transfers using rsync). In\n\
+      \032           particular, limit the number of simultaneous transfer using\n\
+      \032           an rsync (as the rsync algorithm can use a large amount of\n\
+      \032           memory when processing huge files)\n\
+      \032         + Keep track of which file contents are being transferred, and\n\
+      \032           delay the transfer of a file when another file with the same\n\
+      \032           contents is currently being transferred. This way, the second\n\
+      \032           transfer can be skipped and replaced by a local copy.\n\
+      \032         + Experimental update detection optimization: do not read the\n\
+      \032           contents of unchanged directories\n\
+      \032         + When a file transfer fails, turn off fastcheck for this file\n\
+      \032           on the next sync.\n\
+      \032         + Fixed bug with case insensitive mode on a case sensitive\n\
+      \032           filesystem:\n\
+      \032              o if file \"a/a\" is created on one replica and directory\n\
+      \032                \"A\" is created on the other, the file failed to be\n\
+      \032                synchronized the first time Unison is run afterwards, as\n\
+      \032                Unison uses the wrong path \"a/a\" (if Unison is run\n\
+      \032                again, the directories are in the archive, so the right\n\
+      \032                path is used);\n\
+      \032              o if file \"a\" appears on one replica and file \"A\" appears\n\
+      \032                on the other with different contents, Unison was unable\n\
+      \032                to synchronize them.\n\
+      \032         + Improved error reporting when the destination is updated\n\
+      \032           during synchronization: Unison now tells which file has been\n\
+      \032           updated, and how.\n\
+      \032         + Limit the length of temporary file names\n\
+      \032         + Case sensitivity information put in the archive (in a\n\
+      \032           backward compatible way) and checked when the archive is\n\
+      \032           loaded\n\
+      \032         + Got rid of the 16MiB marshalling limit by marshalling to a\n\
+      \032           bigarray.\n\
+      \n\
       \032  Changes since 2.31:\n\
       \032    * Small user interface changes\n\
       \032         + Small change to text UI \"scanning...\" messages, to print just\n\
@@ -2607,6 +2881,11 @@
       \032           why!) We've also added more debugging code togive more\n\
       \032           informative error messages when we encounter the dreaded and\n\
       \032           longstanding \"assert failed during file transfer\" bug\n\
+      \032         + Incorrect paths (\"path\" directive) now result in an error\n\
+      \032           update item rather than a fatal error.\n\
+      \032         + Create parent directories (with correct permissions) during\n\
+      \032           transport for paths which point to non-existent locations in\n\
+      \032           the destination replica.\n\
       \n\
       \032  Changes since 2.27:\n\
       \032    * If Unison is interrupted during a directory transfer, it will now\n\
@@ -2668,9 +2947,8 @@
       \032           about suggesting a workaround (running once with fastcheck\n\
       \032           set to false). The failure message has been changed to give\n\
       \032           this advice.\n\
-      \032         + Many improvements to the OS X GUI (thanks to Alan Schmitt and\n\
-      \032           Craig Federighi), including a very nice new \"nested\n\
-      \032           directory\" display style and per-file progress bars.\n\
+      \032         + Further improvements to the OS X GUI (thanks to Alan Schmitt\n\
+      \032           and Craig Federighi).\n\
       \032    * Very preliminary support for triggering Unison from an external\n\
       \032      filesystem-watching utility. The current implementation is very\n\
       \032      simple, not efficient, and almost completely untested--not ready\n\

Modified: trunk/src/ubase/depend
===================================================================
--- trunk/src/ubase/depend	2010-02-17 13:06:38 UTC (rev 410)
+++ trunk/src/ubase/depend	2010-02-20 23:06:02 UTC (rev 411)
@@ -1,20 +0,0 @@
-myMap.cmo: myMap.cmi 
-myMap.cmx: myMap.cmi 
-prefs.cmo: util.cmi uarg.cmi safelist.cmi prefs.cmi 
-prefs.cmx: util.cmx uarg.cmx safelist.cmx prefs.cmi 
-proplist.cmo: util.cmi proplist.cmi 
-proplist.cmx: util.cmx proplist.cmi 
-rx.cmo: rx.cmi 
-rx.cmx: rx.cmi 
-safelist.cmo: safelist.cmi 
-safelist.cmx: safelist.cmi 
-trace.cmo: util.cmi safelist.cmi prefs.cmi trace.cmi 
-trace.cmx: util.cmx safelist.cmx prefs.cmx trace.cmi 
-uarg.cmo: util.cmi safelist.cmi uarg.cmi 
-uarg.cmx: util.cmx safelist.cmx uarg.cmi 
-uprintf.cmo: uprintf.cmi 
-uprintf.cmx: uprintf.cmi 
-util.cmo: uprintf.cmi safelist.cmi util.cmi 
-util.cmx: uprintf.cmx safelist.cmx util.cmi 
-prefs.cmi: util.cmi 
-trace.cmi: prefs.cmi 



More information about the Unison-hackers mailing list