[Unison-hackers] [unison-svn] r321 - in trunk: doc src

Benjamin C. Pierce bcpierce at seas.upenn.edu
Fri May 1 22:30:33 EDT 2009


Author: bcpierce
Date: 2009-05-01 22:30:31 -0400 (Fri, 01 May 2009)
New Revision: 321

Modified:
   trunk/doc/changes.tex
   trunk/src/RECENTNEWS
   trunk/src/mkProjectInfo.ml
   trunk/src/strings.ml
Log:
* Move descriptions of recent changes to documentation.



Modified: trunk/doc/changes.tex
===================================================================
--- trunk/doc/changes.tex	2009-05-02 01:57:23 UTC (rev 320)
+++ trunk/doc/changes.tex	2009-05-02 02:30:31 UTC (rev 321)
@@ -1,24 +1,142 @@
+\begin{changesfromversion}{2.31}
+\item Small user interface changes
+\begin{itemize}
+\item Small change to text UI "scanning..." messages, to print just
+  directories (hopefully making it clearer that individual files are
+  not necessarily being fingerprinted).  
+\end{itemize}
+\item Minor fixes and improvements:
+\begin{itemize}
+\item 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.
+\item 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.)
+\item 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
+\end{itemize}
+\end{changesfromversion}
+
+\begin{changesfromversion}{2.27}
+\item 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.
+\item 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:
+\begin{itemize}
+\item {\tt 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.
+\item 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.)
+\item {\tt 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.)
+\end{itemize}
+Thanks to Alan Schmitt for a huge amount of hacking and to an anonymous
+sponsor for suggesting and underwriting this extension.
+\item Small improvements:
+\begin{itemize}
+\item Added a new preference, {\tt dontchmod}.  By default, Unison uses the
+{\tt 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 {\tt chmod}.
+\item Don't ignore files that look like backup files if the {\tt
+  backuplocation} preference is set to {\tt central}
+\item Shortened the names of several preferences.  The old names are also
+still supported, for backwards compatibility, but they do not appear in the
+documentation.
+\item 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.
+\item 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 \emph{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 {\tt fastcheck} set to false).  The failure message has been changed to
+give this advice.
+\item Further improvements to the OS X GUI (thanks to Alan Schmitt and Craig
+Federighi).
+\end{itemize}
+\item 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:
+  \begin{itemize}
+  \item use the text UI 
+    \item start Unison with the command-line flag "-repeat FOO", 
+      where FOO is name of a file where Unison should look 
+      for notifications of changes
+    \item  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
+    \item 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
+    \item that's it!
+  \end{itemize}
+  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.
+\item Bug fixes:
+\begin{itemize}
+\item 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.)
+\item Follow maxthreads preference when transferring directories.
+\end{itemize}
+\end{changesfromversion}
+
 \begin{changesfromversion}{2.17}
 \item Major rewrite and cleanup of the whole Mac OS X graphical user
 interface by Craig Federighi.  Thanks, Craig!!!
-
 \item Small fix to ctime (non-)handling in update detection under windows
   with fastcheck.  
-\end{changesfromversion}
-
-\begin{changesfromversion}{2.17}
 \item Several small fixes to the GTK2 UI to make it work better under
 Windows [thanks to Karl M for these].
-
 \item The backup functionality has been completely rewritten.  The external
 interface has not changed, but numerous bugs, irregular behaviors, and
 cross-platform inconsistencies have been corrected.
-
 \item The Unison project now accepts donations via PayPal.  If you'd like to
 donate, you can find a link to the donation page on the
 \URL{http://www.cis.upenn.edu/~bcpierce/unison/lists.html}{Unison home
   page}.
-
 \item Some important safety improvements:
 \begin{itemize}
 \item Added a new \verb|mountpoint| preference, which can be used to specify
@@ -26,13 +144,11 @@
 (otherwise Unison aborts).  This can be used to avoid potentially dangerous
 situations when Unison is used with removable media such as external hard
 drives and compact flash cards.  
-
 \item The confirmation of ``big deletes'' is now controlled by a boolean preference
   \verb|confirmbigdeletes|.  Default is true, which gives the same behavior as
   previously.  (This functionality is at least partly superceded by the
   \verb|mountpoint| preference, but it has been left in place in case it is
   useful to some people.)
-  
   \item If Unison is asked to ``follow'' a symbolic link but there is
   nothing at the other end of the link, it will now flag this path as an
   error, rather than treating the symlink itself as missing or deleted.
@@ -47,37 +163,28 @@
 \item Added \verb|forcepartial| and \verb|preferpartial| preferences, which
 behave like \verb|force| and \verb|prefer| but can be specified on a
 per-path basis. [Thanks to Alan Schmitt for this.]
-
 \item A bare-bones self test feature was added, which runs unison through
   some of its paces and checks that the results are as expected.  The
   coverage of the tests is still very limited, but the facility has already
   been very useful in debugging the new backup functionality (especially in
   exposing some subtle cross-platform issues).
-
 \item Refined debugging code so that the verbosity of individual modules
   can be controlled separately.  Instead of just putting '-debug
   verbose' on the command line, you can put '-debug update+', which
   causes all the extra messages in the Update module, but not other
   modules, to be printed.  Putting '-debug verbose' causes all modules
   to print with maximum verbosity.
-
 \item Removed \verb|mergebatch| preference.  (It never seemed very useful, and
   its semantics were confusing.)
-  
 \item Rewrote some of the merging functionality, for better cooperation
   with external Harmony instances.
-
 \item Changed the temp file prefix from \verb|.#| to \verb|.unison|.
-
 \item Compressed the output from the text user interface (particularly
   when run with the \verb|-terse| flag) to make it easier to interpret the
   results when Unison is run several times in succession from a script.
-
 \item Diff and merge functions now work under Windows.
-
 \item Changed the order of arguments to the default diff command (so that
   the + and - annotations in diff's output are reversed).
-
 \item Added \verb|.mpp| files to the ``never fastcheck'' list (like
 \verb|.xls| files). 
 \end{itemize}
@@ -134,24 +241,20 @@
 internals have been rationalized and there are a number of new features.
 See the manual (in particular, the description of the \verb|backupXXX|
 preferences) for details.
-
 \item Incorporated patches for ipv6 support, contributed by Samuel Thibault.
 (Note that, due to a bug in the released OCaml 3.08.3 compiler, this code
 will not actually work with ipv6 unless compiled with the CVS version of the
 OCaml compiler, where the bug has been fixed; however, ipv4 should continue
 to work normally.)
-
 \item OSX interface:
 \begin{itemize}
 \item Incorporated Ben Willmore's cool new icon for the Mac UI.
 \end{itemize}
-
 \item Small fixes:
 \begin{itemize}
 \item Fixed off by one error in month numbers (in printed dates) reported 
   by Bob Burger
 \end{itemize}
-
 \end{changesfromversion}
 
 \begin{changesfromversion}{2.12.0}
@@ -169,14 +272,11 @@
 (without changing the major version number) and new tarballs re-released as
 needed.  When this process converges, the patched beta version will be
 dubbed stable.
-
 \item Warning (failure in batch mode) when one path is completely emptied.
   This prevents Unison from deleting everything on one replica when
   the other disappear.
-
 \item Fix diff bug (where no difference is shown the first time the diff
   command is given).
-
 \item User interface changes:
 \begin{itemize}
 \item Improved workaround for button focus problem (GTK2 UI)
@@ -197,7 +297,6 @@
 \item Include profile name in the GTK2 window name
 \item Added bindings ',' (same as '<') and '.' (same as '>') in the GTK2 UI
 \end{itemize}
-
 \item Mac GUI:
 \begin{itemize}
 \item actions like < and > scroll to the next item as necessary.
@@ -214,8 +313,6 @@
 \item   Size of left and right columns is now large enough so that
     "PropsChanged" is not cut off.
 \end{itemize}
-
-
 \item Minor changes:
 \begin{itemize}
 \item Disable multi-threading when both roots are local
@@ -241,12 +338,10 @@
   they occur in the diff preference
 \item Improvements to syncing resource forks between Macs via a non-Mac system.
 \end{itemize}
-
 \end{changesfromversion}
 
 \begin{changesfromversion}{2.10.2}
 \item \incompatible{} Archive format has changed.  
-
 \item Source code availability: The Unison sources are now managed using
   Subversion.  One nice side-effect is that anonymous checkout is now
   possible, like this:
@@ -257,7 +352,6 @@
 (modulo one day) sources in the web export directory.  To receive commit logs
 for changes to the sources, subscribe to the \verb|unison-hackers| list
 (\ONEURL{http://www.cis.upenn.edu/~bcpierce/unison/lists.html}). 
-
 \item Text user interface:
 \begin{itemize}
 \item Substantial reworking of the internal logic of the text UI to make it
@@ -266,7 +360,6 @@
 the client is running on a Unix system and the {\tt EMACS} environment
 variable is set to anything other than the empty string.
 \end{itemize}
-
 \item Native OS X gui:
 \begin{itemize}
 \item Added a synchronize menu item with keyboard shortcut
@@ -274,7 +367,6 @@
 \item Fixes to compile for Panther
 \item Miscellaneous improvements and bugfixes
 \end{itemize}
-
 \item Small changes:
 \begin{itemize}
 \item Changed the filename checking code to apply to Windows only, instead
@@ -316,9 +408,7 @@
 
   Warning: the new merging functionality is not completely compatible with
   old versions!  Check the manual for details.
-  
 \item Files larger than 2Gb are now supported.
-
 \item Added preliminary (and still somewhat experimental) support for the
   Apple OS X operating system.   
 \begin{itemize}
@@ -341,7 +431,6 @@
 
 \item Minor functionality changes:
 \begin{itemize}
-
 \item Added an {\tt ignorelocks} preference, which forces Unison to override left-over
   archive locks.  (Setting this preference is dangerous!  Use it only if you
   are positive you know what you are doing.) 
@@ -357,7 +446,6 @@
   {\tt assumeContentsAreImmutableNot}, which overrides the first, similarly
   to {\tt ignorenot}.  (Later amendment: these preferences are now called
   {\tt immutable} and {\tt immutablenot}.)
-
 \item The {\tt ignorecase} flag has been changed from a boolean to a three-valued
   preference.  The default setting, called {\tt default}, checks the operating systems
   running on the client and server and ignores filename case if either of them is
@@ -365,40 +453,33 @@
   this behavior.  If you have been setting {\tt ignorecase} on the command
   line using {\tt -ignorecase=true} or {\tt -ignorecase=false}, you will
   need to change to {\tt -ignorecase true} or {\tt -ignorecase false}.
-
 \item a new preference, 'repeat', for the text user interface (only).  If 'repeat' is set to
   a number, then, after it finishes synchronizing, Unison will wait for that many seconds and
   then start over, continuing this way until it is killed from outside.  Setting repeat to true
   will automatically set the batch preference to true.  
-  
 \item Excel files are now handled specially, so that the {\tt fastcheck}
   optimization is skipped even if the {\tt fastcheck} flag is set.  (Excel
   does some naughty things with modtimes, making this optimization
   unreliable and leading to failures during change propagation.)
-
 \item The ignorecase flag has been changed from a boolean to a three-valued
   preference.  The default setting, called 'default', checks the operating systems
   running on the client and server and ignores filename case if either of them is
   OSX or Windows.  Setting ignorecase to 'true' or 'false' overrides this behavior.
-  
 \item Added a new preference, 'repeat', for the text user interface (only,
   at the moment).  If 'repeat' is set to a number, then, after it finishes
   synchronizing, Unison will wait for that many seconds and then start over,
   continuing this way until it is killed from outside.  Setting repeat to
   true will automatically set the batch preference to true.
-
 \item The 'rshargs' preference has been split into 'rshargs' and 'sshargs' 
   (mainly to make the documentation clearer).  In fact, 'rshargs' is no longer
   mentioned in the documentation at all, since pretty much everybody uses
   ssh now anyway.
 \end{itemize}
-
 \item Documentation
 \begin{itemize}
 \item The web pages have been completely redesigned and reorganized.
   (Thanks to Alan Schmitt for help with this.)
 \end{itemize}
-
 \item User interface improvements
 \begin{itemize}
 \item Added a GTK2 user interface, capable (among other things) of displaying filenames
@@ -412,7 +493,6 @@
 \item Several small improvements to the text user interface, including a
   progress display.
 \end{itemize}
-
 \item Bug fixes (too numerous to count, actually, but here are some):
 \begin{itemize}
 \item The {\tt maxthreads} preference works now.
@@ -432,7 +512,6 @@
 \item Incorporated a fix by Dmitry Bely for setting utimes of read-only files
   on Win32 systems.   
 \end{itemize}
-
 \item Installation / portability:
 \begin{itemize}
 \item Unison now compiles with OCaml version 3.07 and later out of the box.
@@ -491,11 +570,11 @@
 Unix 
 \item Small improvements:
   \begin{itemize} 
-  \item If neither the {\\tt USERPROFILE} nor the {\\tt HOME} environment
+  \item 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:}.
+    (called {\tt DANGER.README}) into the directory named by the 
+    {\tt UNISON} environment variable, if any; otherwise it will use
+    {\tt C:}.
   \item alternative set of values for fastcheck: yes = true; no = false;
   default = auto.
   \item -silent implies -contactquietly
@@ -549,7 +628,7 @@
   update detection are now noted in the log file.
 \item \verb|[END]| messages in log now use a briefer format
 \item Changed the text UI startup sequence so that
-  {\\tt ./unison -ui text} will use the default profile instead of failing.
+  {\tt ./unison -ui text} will use the default profile instead of failing.
 \item Made some improvements to the error messages.
 \item Added some debugging messages to remote.ml.
 \end{itemize}

Modified: trunk/src/RECENTNEWS
===================================================================
--- trunk/src/RECENTNEWS	2009-05-02 01:57:23 UTC (rev 320)
+++ trunk/src/RECENTNEWS	2009-05-02 02:30:31 UTC (rev 321)
@@ -1,527 +1,6 @@
-CHANGES FROM VERSION 2.32.6
+CHANGES FROM VERSION 2.32.7
 
-* Update copyright notices and add GPLv3 boilerplate to .ml files
-  (.mli files are left with a short copyright line, to reduce clutter)
+* Move descriptions of recent changes to documentation.
 
--------------------------------
-CHANGES FROM VERSION 2.32.5
 
-* Update copyright notices and add GPLv3 boilerplate to .ml files
-  (.mli files are left with a short copyright line, to reduce clutter)
-
-* 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.
-
-CHANGES FROM VERSION 2.32.4
-
-* Text UI now includes the current time in its completion message
-
-* 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.)
-
-* Small improvement to text UI "scanning..." messages, to print just
-  directories (hopefully making it clearer that individual files are
-  not necessarily being fingerprinted).
-
-
 -------------------------------
-CHANGES FROM VERSION 2.32.2
-
-* 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!)
-
--------------------------------
-CHANGES FROM VERSION 2.32.1
-
-* Applied a patch from Karl M to make the GTK2 version build with
-  OCaml 3.11 on Windows.
-
-* Don't use shortcuts or external copy programs to transfer
-  zero-length files (to avoid confusing status messages about
-  shortcut-copying completely unrelated files that happen to also have
-  zero length!).
-
--------------------------------
-CHANGES FROM VERSION 2.32.0
-
-* Bumped version number to reflect newly added preference
-
--------------------------------
-CHANGES FROM VERSION 2.31.11
-
-* 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.)
-
-* 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.
-
-* Add some suggestions to TODO file
-
--------------------------------
-CHANGES FROM VERSION 2.31.10
-
-* Another slight tweak.
-
--------------------------------
-CHANGES FROM VERSION 2.31.9
-
-* Slight tweak to the last commit, suggested by Rasmus.
-
--------------------------------
-CHANGES FROM VERSION 2.31.8
-
-* (Forgot to add a couple of new files.)
-
--------------------------------
-CHANGES FROM VERSION 2.31.5
-
-* A special hack for Rasmus, who has a special situation that requires
-  the utimes-setting program to run 'setuid root' (and we do not want
-  all of Unison to run setuid, so we just spin off an external utility
-  to do it).  This functionality is disabled by default and requires
-  editing the source code (changing 'false' to 'true' on line 496 of
-  props.ml) and recompiling to enable.  If there are other people that
-  want it, we can easily make it accessible using a preference
-  instead, but I prefer not to add a preference until someone else
-  requests it, to avoid creating an incompatible version.
-
-* Logging tweak.
-
--------------------------------
-CHANGES FROM VERSION 2.31.5
-
-* A special hack for Rasmus, who has a special situation that requires
-  the utimes-setting program to run 'setuid root' (and we do not want
-  all of Unison to run setuid, so we just spin off an external utility
-  to do it).  This functionality is disabled by default and requires
-  editing the source code (changing 'false' to 'true' on line 496 of
-  props.ml) and recompiling to enable.  If there are other people that
-  want it, we can easily make it accessible using a preference
-  instead, but I prefer not to add a preference until someone else
-  requests it, to avoid creating an incompatible version.
-
-* Logging tweak.
-
-* Resizing the update window vertically no longer moves the status
-  label. Fix contributed by Pedro Melo.
-
--------------------------------
-
-CHANGES FROM VERSION 2.31.4
-
-* Don't ignore files that look like backup files if the {\\tt
-  backuplocation} preference is set to {\\tt central}
-
--------------------------------
-CHANGES FROM VERSION 2.31.3
-
-* Updated documentation with recently added preferences.
-
-* Applied patch from Antoine Reilles for NetBSD compilation
-
-* Makefile tidying
-
--------------------------------
-CHANGES FROM VERSION 2.31.2
-
-* Added a bit of debugging code for Alan.
-
--------------------------------
-CHANGES FROM VERSION 2.31.1
-
-* Fixed a small bug with resuming interrupted file transfers when both
-  replicas are local.
--------------------------------
-CHANGES FROM VERSION 2.31.-1
-
-* Fixed a couple of file-transfer bugs.  (One was about copying
-  resource forks.  Another was about restarting interrupted transfers
-  on files where exactly zero bytes had been transferred so far and
-  the file had been created with null permissions -- believe it or
-  not, this is possible with rsync!)  This required a protocol change,
-  so I'm also bumping the version number.
-
--------------------------------
-CHANGES FROM VERSION 2.30.4
-
-* Work on text UI to prepare for new filesystem watcher functionality
-
-* Record some current TODO items
-
--------------------------------
-CHANGES FROM VERSION 2.30.3
-
-* Update docs
-
--------------------------------
-CHANGES FROM VERSION 2.30.2
-
-fix quoting for Unix
-
--------------------------------
-CHANGES FROM VERSION 2.30.1
-
-- Fixed handling of paths containing spaces when using rsync
-- Better error report for fingerprint mismatch
--------------------------------
-CHANGES FROM VERSION 2.30.0
-
-* A better fix for the "single file transfer failed in large directory" issue.
-
--------------------------------
-CHANGES FROM VERSION 2.29.9
-
-* Trying a possible fix for the "assert failure in remote.ml" bug
-  (thanks Jerome!)
-
--------------------------------
-CHANGES FROM VERSION 2.29.8
-
-* Updated documentation.
-
-* Shortened the names of several preferences.  The old names are also
-  still supported, for backwards compatibility, but they do not appear
-  in the documentation.
-
--------------------------------
-CHANGES FROM VERSION 2.29.7
-
-* Squashed a bug in transferring partially transferred directories
-  containing symlinks.
-
-* Squashed some more bugs in partial rsync transfers (rsync, oddly,
-  creates files with zero permissions and then on the next run
-  discovers that it cannot write to the file it partially wrote
-  before!).
-
-* 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.)
-
--------------------------------
-CHANGES FROM VERSION 2.29.7
-
-* Squashed a bug in transferring partially transferred directories
-  containing symlinks.
-
-* Squashed some more bugs in partial rsync transfers (rsync, oddly,
-  creates files with zero permissions and then on the next run
-  discovers that it cannot write to the file it partially wrote
-  before!).
-
-* 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.)
-
--------------------------------
-CHANGES FROM VERSION 2.29.6
-
-* Fix a small bug in the external copyprog setup.
-
--------------------------------
-CHANGES FROM VERSION 2.29.5
-
-* Lots of little documentation tidying.  (In particular, I finally
-  spent the time to separate preferences into Basic and Advanced!
-  This should hopefully make Unison a little more approachable for new
-  users.)
-
--------------------------------
-CHANGES FROM VERSION 2.29.4
-
-* When using the internal transfer method, remove any temp file on the
-  destination (which may be left over from a previous interrupted run
-  of Unison) before starting the transfer.
-
-* Fixed (hopefully!) the bug causing Unison to backup the new archive
-  version after a (partially or fully) successful merge.
-
-* Updated copyright notices to 2008.  :-)
-
--------------------------------
-CHANGES FROM VERSION 2.29.3
-
-* Updated documentation to describe new features
-
-* Changed units of copythreshold to kilobytes
-
-* Added -z to flags for external rsync program
--------------------------------
-CHANGES FROM VERSION 2.29.2
-
-* Automatically supply "user@" in argument to external copy program.
-
--------------------------------
-CHANGES FROM VERSION 2.29.1
-
-Follow maxthreads preference when transferring directories.
--------------------------------
-CHANGES FROM VERSION 2.29.0
-
-This version introduces some pretty big changes, by BCP in
-collaboration with Alan Schmitt.  We've tested them minimally, but
-this version should be considered "only for the adventurous" for the
-moment.
-
-* Added some more debugging code to remote.ml to give more informative
-  error messages when we encounter the (dreaded and longstanding)
-  "assert failed during file transfer" bug
-
-* Experimental support for invoking an external file transfer tool for
-  whole-file copies instead of Unison's built-in transfer protocol.  
-
-  Two 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.
-
-    - 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.)
-
-* 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.  
-
--------------------------------
-CHANGES FROM VERSION 2.28.51
-
-* Propagating changes from 2.27 branch
-
--------------------------------
-CHANGES FROM VERSION 2.28.51
-
-* Propagating changes from 2.27 branch
-
-
--------------------------------
-CHANGES FROM VERSION 2.28.45
-
-* 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.
-
-* Upgraded to GPL version 3 and added copyright notice to
-  documentation files.
-
--------------------------------
-CHANGES FROM VERSION 2.28.36
-
-* Transfer changes from 2.27 branch
-
--------------------------------
--------------------------------
-CHANGES FROM VERSION 2.28.29
-
-* Propagage changes from 2.27 branch.
-
-
--------------------------------
-CHANGES FROM VERSION 2.28.23
-
-* Small improvement to error message when no archive files are
-  found (thanks to Norman Ramsey).
-
-* Patch from Karl M for GTK2 UI:
-     1) reverts the problematic (when no profile is used)
-        reloadProfile on the restart button.
-     2) it adds a reloadProfile call after the detectCmd for
-        rescanning unsynchronized items.
-     3) it turns off confirmBigDeletes on a rescan and checks it
-        before issuing a warning popup.
-     4) it adjusts the status results width so that everything fits.
-
--------------------------------
-CHANGES FROM VERSION 2.28.17
-
-* Applying a patch from Karl M to make the Restart button reload the
-  profile in the uigtk2 UI.
-
-* Fixed a bug in the merge code (new archive was not being backed up).
-  Minor improvements to the merge code to make it say more about what
-  it's doing and why.
-
-
--------------------------------
-CHANGES FROM VERSION 2.28.16
-
-More Mac UI improvements
-* Revert the combo ProgressIndicator / status message (couldn't get the flicker to go away...)
-* Improved file change icons
-    - Lighter color / slight gradient wash
-    - Icons for Absent (opposite side of an add) and Unmodified (opposite side of a one sided change) -- these give the line balance
-* Display panel for errors occuring during Connecting... phase
-
--------------------------------
-CHANGES FROM VERSION 2.28.15
-
-Test commit.
-
--------------------------------
-CHANGES FROM VERSION 2.28.13
-
-* Roll back non-fix for GTK2 UI
-
--------------------------------
-CHANGES FROM VERSION 2.28.11
-
-* Added some files left out of the previous commit.
-
-* Fix for GTK2 UI, suggested by Karl M
-
--------------------------------
-CHANGES FROM VERSION 2.28.9
-
-* More Mac GUI goodness from Craig.
-
-Enhancements:
-    - Default table layout is now outline view (middle choice in outline control)
-    - Outline layout initial does "smart expand" to open one screen full
-    - Action icons - Lighter parent icons
-    - Icons for Left / Right work (Added, Modified, Deleted)
-
-Bug Fixes:
-    - Fix problem with file Details not showing
-    - Sort by Action not working
-    - Missing status for some items (on right)
-    - Reset view contents (clear recon items) when re-syncing
-    - Action icons -- Fix upside-down question mark
-    - Fix centering of "Connecting..." message when panel is resized
-    - Force to progress to 100% when done
-
-Known Issues:
-
-1) The most controversial "enhancement" here is the replacement of the
-   text for Left / Right (e.g. "Modified", "Deleted") with more
-   compact / colorful icons.  These icons are perhaps was too "loud",
-   but Craig thinks that if he can tone them down a bit that this will
-   be an improvement.  [Actually, I like them pretty well as-is.]
-
-   Any icon artists out there?
-
-2) The rendering of the status message in the main ProgressIndicator
-   is currently leading to flicker.
-
--------------------------------
-CHANGES FROM VERSION 2.28.8
-
-* Some more files needed for Craig's updated Mac GUI.
-
--------------------------------
-CHANGES FROM VERSION 2.28.6
-
-* More improvements to the OSX GUI from Craig Federighi, including a very 
-  nice new "nested directory" display style and per-file progress bars.  Any
-  unison hackers using Macs are invited to check out the new UI and post
-  any bugs or suggestions for improvement to the unison-hackers list.
-
-  (There is one known issue that sometimes causes the list of changes to be 
-  redisplayed incorrectly after an Ignore command.)
-
--------------------------------
-CHANGES FROM VERSION 2.28.5
-
-* Add couple of missing files.
-
--------------------------------
-CHANGES FROM VERSION 2.28.4
-
-* Apply experimental patch from Craig Federighi, which seems to fix
-  the deadlocks and crashes in new OSX UI.  (Actually, this is a major
-  rewrite and cleanup of the whole Cocoa UI.)  Thanks, Craig!!!
-
-  It would be great if some Mac users could help stress-test this fix.
-
--------------------------------
-CHANGES FROM VERSION 2.28.4
-
-* Apply experimental patch from Craig Federighi, which seems to fix
-  the deadlocks and crashes in new OSX UI.  (Actually, this is a major
-  rewrite and cleanup of the whole Cocoa UI.)  Thanks, Craig!!!
-
-  It would be great if some Mac users could help stress-test this fix.
-
--------------------------------
-CHANGES FROM VERSION 2.28.3
-
-* Another fix to ctime (non-)handling
-
--------------------------------
-CHANGES FROM VERSION 2.28.1
-
-* Small fix to ctime (non-)handling in update detection under windows
-  with fastcheck.  This *might* fix the bug that Karl M. has reported.  
-  (Copying fix into trunk.)
-
--------------------------------
-CHANGES FROM VERSION 2.28.-2
-
-* 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 me improve it (e.g.,
-  by writing a filesystem watcher for your favorite OS), please let
-  me know.
-
-  On the Unison side, the new behavior is incredibly 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.
-
-  Since I'm an OSX user, I'm particularly interested in writing a 
-  watcher tool for this platform.  If anybody knows about 
-  programming against the Spotlight API and can give me a hand, 
-  that would be much appreciated.
-
--------------------------------

Modified: trunk/src/mkProjectInfo.ml
===================================================================
--- trunk/src/mkProjectInfo.ml	2009-05-02 01:57:23 UTC (rev 320)
+++ trunk/src/mkProjectInfo.ml	2009-05-02 02:30:31 UTC (rev 321)
@@ -104,3 +104,4 @@
 
 
 
+

Modified: trunk/src/strings.ml
===================================================================
--- trunk/src/strings.ml	2009-05-02 01:57:23 UTC (rev 320)
+++ trunk/src/strings.ml	2009-05-02 02:30:31 UTC (rev 321)
@@ -4,7 +4,7 @@
 let docs =
     ("about", ("About Unison", 
      "Unison File Synchronizer\n\
-      Version 2.32.1\n\
+      Version 2.32.7\n\
       \n\
       "))
 ::
@@ -1154,7 +1154,7 @@
       \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 (default true)\n\
+      \032-dumbtty           do not change terminal settings in text UI\n\
       \032-fastcheck xxx     do fast update detection (true/false/default)\n\
       \032-forcepartial xxx  add a pattern to the forcepartial list\n\
       \032-height n          height (in lines) of main window in graphical interface\n\
@@ -1458,7 +1458,7 @@
       \032         that may have been left over from a previous run of Unison that\n\
       \032         was interrupted while reading or writing archive files; by\n\
       \032         default, when Unison sees these lock files it will stop and\n\
-      \032         request manualintervention. This option should be set only if\n\
+      \032         request manual intervention. This option should be set only if\n\
       \032         you are positive that no other instance of Unison might be\n\
       \032         concurrently accessing the same archive files (e.g., because\n\
       \032         there was only one instance of unison running and it has just\n\
@@ -2582,16 +2582,133 @@
       \n\
       "))
 ::
-    ("news", ("Changes in Version 2.32.1", 
-     "Changes in Version 2.32.1\n\
+    ("news", ("Changes in Version 2.32.7", 
+     "Changes in Version 2.32.7\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\
+      \032           directories (hopefully making it clearer that individual\n\
+      \032           files are not necessarily being fingerprinted).\n\
+      \032    * Minor fixes and improvements:\n\
+      \032         + Ignore one hour differences when deciding whether a file may\n\
+      \032           have been updated. This avoids slow update detection after\n\
+      \032           daylight saving time changes under Windows. This makes Unison\n\
+      \032           slightly more likely to miss an update, but it should be safe\n\
+      \032           enough.\n\
+      \032         + Fix a small bug that was affecting mainly windows users. We\n\
+      \032           need to commit the archives at the end of the sync even if\n\
+      \032           there are no updates to propagate because some files (in\n\
+      \032           fact, if we've just switched to DST on windows, a LOT of\n\
+      \032           files) might have new modtimes in the archive. (Changed the\n\
+      \032           text UI only. It's less clear where to change the GUI.)\n\
+      \032         + Don't delete the temp file when a transfer fails due to a\n\
+      \032           fingerprint mismatch (so that we can have a look and see\n\
+      \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\
+      \n\
+      \032  Changes since 2.27:\n\
+      \032    * If Unison is interrupted during a directory transfer, it will now\n\
+      \032      leave the partially transferred directory intact in a temporary\n\
+      \032      location. (This maintains the invariant that new files/directories\n\
+      \032      are transferred either completely or not at all.) The next time\n\
+      \032      Unison is run, it will continue filling in this temporary\n\
+      \032      directory, skipping transferring files that it finds are already\n\
+      \032      there.\n\
+      \032    * We've added experimental support for invoking an external file\n\
+      \032      transfer tool for whole-file copies instead of Unison's built-in\n\
+      \032      transfer protocol. Three new preferences have been added:\n\
+      \032         + copyprog is a string giving the name (and command-line\n\
+      \032           switches, if needed) of an external program that can be used\n\
+      \032           to copy large files efficiently. By default, rsync is\n\
+      \032           invoked, but other tools such as scp can be used instead by\n\
+      \032           changing the value of this preference. (Although this is not\n\
+      \032           its primary purpose, rsync is actually a pretty fast way of\n\
+      \032           copying files that don't already exist on the receiving\n\
+      \032           host.) For files that do already exist on (but that have been\n\
+      \032           changed in one replica), Unison will always use its built-in\n\
+      \032           implementation of the rsync algorithm.\n\
+      \032         + Added a \"copyprogrest\" preference, so that we can give\n\
+      \032           different command lines for invoking the external copy\n\
+      \032           utility depending on whether a partially transferred file\n\
+      \032           already exists or not. (Rsync doesn't seem to care about\n\
+      \032           this, but other utilities may.)\n\
+      \032         + copythreshold is an integer (-1 by default), indicating above\n\
+      \032           what filesize (in megabytes) Unison should use the external\n\
+      \032           copying utility specified by copyprog. Specifying 0 will\n\
+      \032           cause ALL copies to use the external program; a negative\n\
+      \032           number will prevent any files from using it. (Default is -1.)\n\
+      \032      Thanks to Alan Schmitt for a huge amount of hacking and to an\n\
+      \032      anonymous sponsor for suggesting and underwriting this extension.\n\
+      \032    * Small improvements:\n\
+      \032         + Added a new preference, dontchmod. By default, Unison uses\n\
+      \032           the chmod system call to set the permission bits of files\n\
+      \032           after it has copied them. But in some circumstances (and\n\
+      \032           under some operating systems), the chmod call always fails.\n\
+      \032           Setting this preference completely prevents Unison from ever\n\
+      \032           calling chmod.\n\
+      \032         + Don't ignore files that look like backup files if the\n\
+      \032           backuplocation preference is set to central\n\
+      \032         + Shortened the names of several preferences. The old names are\n\
+      \032           also still supported, for backwards compatibility, but they\n\
+      \032           do not appear in the documentation.\n\
+      \032         + Lots of little documentation tidying. (In particular,\n\
+      \032           preferences are separated into Basic and Advanced! This\n\
+      \032           should hopefully make Unison a little more approachable for\n\
+      \032           new users.\n\
+      \032         + Unison can sometimes fail to transfer a file, giving the\n\
+      \032           unhelpful message \"Destination updated during\n\
+      \032           synchronization\" even though the file has not been changed.\n\
+      \032           This can be caused by programs that change either the file's\n\
+      \032           contents or the file's extended attributes without changing\n\
+      \032           its modification time. It's not clear what is the best fix\n\
+      \032           for this - it is not Unison's fault, but it makes Unison's\n\
+      \032           behavior puzzling - but at least Unison can be more helpful\n\
+      \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    * 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\
+      \032      for real users. But if someone wants to help improve it (e.g., by\n\
+      \032      writing a filesystem watcher for your favorite OS), please make\n\
+      \032      yourself known!\n\
+      \032      On the Unison side, the new behavior is very simple:\n\
+      \032         + use the text UI\n\
+      \032         + start Unison with the command-line flag \"-repeat FOO\", where\n\
+      \032           FOO is name of a file where Unison should look for\n\
+      \032           notifications of changes\n\
+      \032         + when it starts up, Unison will read the whole contents of\n\
+      \032           this file (on both hosts), which should be a\n\
+      \032           newline-separated list of paths (relative to the root of the\n\
+      \032           synchronization) and synchronize just these paths, as if it\n\
+      \032           had been started with the \"-path=xxx\" option for each one of\n\
+      \032           them\n\
+      \032         + when it finishes, it will sleep for a few seconds and then\n\
+      \032           examine the watchfile again; if anything has been added, it\n\
+      \032           will read the new paths, synchronize them, and go back to\n\
+      \032           sleep\n\
+      \032         + that's it!\n\
+      \032      To use this to drive Unison \"incrementally,\" just start it in this\n\
+      \032      mode and start up a tool (on each host) to watch for new changes\n\
+      \032      to the filesystem and append the appropriate paths to the\n\
+      \032      watchfile. Hopefully such tools should not be too hard to write.\n\
+      \032    * Bug fixes:\n\
+      \032         + Fixed a bug that was causing new files to be created with\n\
+      \032           permissions 0x600 instead of using a reasonable default (like\n\
+      \032           0x644), if the 'perms' flag was set to 0. (Bug reported by\n\
+      \032           Ben Crowell.)\n\
+      \032         + Follow maxthreads preference when transferring directories.\n\
+      \n\
       \032  Changes since 2.17:\n\
       \032    * Major rewrite and cleanup of the whole Mac OS X graphical user\n\
       \032      interface by Craig Federighi. Thanks, Craig!!!\n\
       \032    * Small fix to ctime (non-)handling in update detection under\n\
       \032      windows with fastcheck.\n\
-      \n\
-      \032  Changes since 2.17:\n\
       \032    * Several small fixes to the GTK2 UI to make it work better under\n\
       \032      Windows [thanks to Karl M for these].\n\
       \032    * The backup functionality has been completely rewritten. The\n\
@@ -3017,13 +3134,10 @@
       \032    * Fixed potential deadlock when synchronizing between Windows and\n\
       \032      Unix\n\
       \032    * Small improvements:\n\
-      \032         + If neither the\n\
-      \032           tt USERPROFILE nor the\n\
-      \032           tt HOME environment variables are set, then Unison will put\n\
-      \032           its temporary commit log (called\n\
-      \032           tt DANGER.README) into the directory named by the\n\
-      \032           tt UNISON environment variable, if any; otherwise it will use\n\
-      \032           tt C:.\n\
+      \032         + If neither the USERPROFILE nor the HOME environment variables\n\
+      \032           are set, then Unison will put its temporary commit log\n\
+      \032           (called DANGER.README) into the directory named by the UNISON\n\
+      \032           environment variable, if any; otherwise it will use C:.\n\
       \032         + alternative set of values for fastcheck: yes = true; no =\n\
       \032           false; default = auto.\n\
       \032         + -silent implies -contactquietly\n\
@@ -3070,9 +3184,8 @@
       \032         + Paths that are not synchronized because of conflicts or\n\
       \032           errors during update detection are now noted in the log file.\n\
       \032         + [END] messages in log now use a briefer format\n\
-      \032         + Changed the text UI startup sequence so that\n\
-      \032           tt ./unison -ui text will use the default profile instead of\n\
-      \032           failing.\n\
+      \032         + Changed the text UI startup sequence so that ./unison -ui\n\
+      \032           text will use the default profile instead of failing.\n\
       \032         + Made some improvements to the error messages.\n\
       \032         + Added some debugging messages to remote.ml.\n\
       \n\



More information about the Unison-hackers mailing list