diff --git a/src/NEWS b/src/NEWS index 44bba0183..19ca49aaf 100644 --- a/src/NEWS +++ b/src/NEWS @@ -1,15 +1,27 @@ -Changes in Version 2.51.3 +Changes in Version 2.51.3.73 + + Changes since 2.51.3: + * OCaml 4.12 support + * fsmonitor improvements and Solaris support + * Color support in text UI, with a new preference, disabled by + NO_COLOR. + * Interactive profile selection in text UI, enabled by a new + preference. + * Working files are stored in the unison directory (typically + /.unison) rather than $HOME. + * Build cleanups, CI improvements, housekeeping + * Many bugfixes and minor improvements Changes since 2.51.2: * Some nontrivial changes to profile parsing (G.raud Meyer) - + ’=’ has been considered whitespace until now: several + + '=' has been considered whitespace until now: several following chars are considered as only one; trailing chars are discarded; any non empty sequence of char is splitting. This is non standard and leads to confusion, for example -ignore== - ’Name .*=*’ is valid when -ignore=’Name .*=*’ is not, and - worse -ignore=’Name *=’ is the same as -ignore=’Name *’. The - parser now takes just a single ’=’ as delimiter after the + 'Name .*=*' is valid when -ignore='Name .*=*' is not, and + worse -ignore='Name *=' is the same as -ignore='Name *'. The + parser now takes just a single '=' as delimiter after the option name. Other = characters are considered as part of the value being assigned to the option. * Numerous improvements to the text user-interface (G.raud Meyer) @@ -22,27 +34,28 @@ Changes in Version 2.51.3 Changes since 2.48: * Repository transplanted from SVN to Git and moved to GitHub () (https://github.com/bcpierce00/unison). - * Add a new preference, ’atomic’, for specifying directories that + * Add a new preference, 'atomic', for specifying directories that should be treated atomically: if there are changes within such a directory in both replicase, the whole directory is marked as a conflict instead of propagating any of the changes. Thanks to Julian Squires for submitting this patch! * OSX / macOS - + Ported to 10.13, High Sierra, and Apple’s new APFS (earlier + + Ported to 10.13, High Sierra, and Apple's new APFS (earlier versions of Unison break because of new behavior of AppleDouble files) + Replaced Growl with OS X native notification center. * Miscellaneous: - + The OCaml compiler version is now included in the “connection - header — the string that’s printed when connecting to a remote - server — to facilitate debugging version mismatch issues. + + The OCaml compiler version is now included in the "connection + header -- the string that's printed when connecting to a + remote server -- to facilitate debugging version mismatch + issues. + Compatible with OCaml 4.06. + Added a DockerFile for the convenience of Docker users. + Many small bugfixes and UI improvements. Changes since 2.45: * Incorporated a patch from Christopher Zimmermann to replace the - Uprintf module (which doesn’t work with OCaml 4.02, causing Unison + Uprintf module (which doesn't work with OCaml 4.02, causing Unison to crash) with equivalent functionality from the standard library. * Incorporated a refresh of the OSX GUI, contributed by Alan Shutko. * Added a maxsizethreshold option, which prevents the transfer of @@ -82,7 +95,7 @@ Changes in Version 2.51.3 * Minor: + Fixed a bug in export procedure that was messing up documentation strings. - + Incorporated a patch from Irányossy Knoblauch Artúr to make + + Incorporated a patch from Irnyossy Knoblauch Artr to make temp file names fit within 143 characters (to make eCryptFS happy). + Added a string to the Conflict direction to document the @@ -104,7 +117,7 @@ Changes in Version 2.51.3 achieve much faster update detection when all the common files in the two replicas are known to be identical. See the manual for more information. - This feature should still be considered experimental, but it’s + This feature should still be considered experimental, but it's ready for other people to try out. * Added option clientHostName. If specified, it will be used to as the client host name, overriding UNISONLOCALHOSTNAME and the actual @@ -144,14 +157,14 @@ Changes in Version 2.51.3 + Fixed String.sub invalid argument error when an AppleDouble file does not contain a finder information field + Trim duplicate paths when using "-repeat watch" - + Unison now passes path arguments and –follow directives to + + Unison now passes path arguments and -follow directives to fsmonitor.py. This seems to work except for one small issue with how fsmonitor.py treats -follow directives for - directories that don’t exist (or maybe this is an issue with + directories that don't exist (or maybe this is an issue with how it treats any kind of monitoring when the thing being - monitored doesn’t exist?). If we create a symlink to a + monitored doesn't exist?). If we create a symlink to a nonexistent directory, give Unison (hence fsmonitor.py) a - ’follow’ directive for the symlink, start unison, and then + 'follow' directive for the symlink, start unison, and then create the directory, fsmonitor.py misses the change. + Lines added in profile files by unison always start at a new line @@ -242,8 +255,8 @@ Changes in Version 2.51.3 changing the case-sensitivity mode should be reasonably fast. * 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’ + updates, deletions or creations on the given root. Also 'partial' + versions of 'noupdate', 'nodeletion' and 'nocreation' * Limit the number of simultaneous external copy program ("copymax" preference) * New "links" preference. When set to false, Unison will report an @@ -265,7 +278,7 @@ Changes in Version 2.51.3 impact all users.) * Do not keep many files simultaneously opened anymore when the rsync algorithm is in use. - * Add “ignorearchives” preference to ignore existing archives (to + * 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). * Mac OS @@ -310,15 +323,15 @@ Changes in Version 2.51.3 + 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. - + Only use long UNC path for accessing replicas (as ’..’ is not + + Only use long UNC path for accessing replicas (as '..' is not handled with this format of paths, but can be useful) + 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. - + Don’t get the home directory from environment variable HOME - under Windows (except for Cygwin binaries): we don’t want the + + 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). @@ -375,12 +388,12 @@ Changes in Version 2.51.3 + 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) + 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 + 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 + 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 + Incorrect paths ("path" directive) now result in an error @@ -397,8 +410,8 @@ Changes in Version 2.51.3 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 + * 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 @@ -406,14 +419,14 @@ Changes in Version 2.51.3 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.) + 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 + 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 @@ -428,7 +441,7 @@ Changes in Version 2.51.3 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 + + 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 @@ -440,10 +453,10 @@ Changes in Version 2.51.3 + 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 + 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. @@ -451,8 +464,8 @@ Changes in Version 2.51.3 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 + 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: @@ -469,7 +482,7 @@ Changes in Version 2.51.3 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! + + 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. @@ -477,7 +490,7 @@ Changes in Version 2.51.3 * 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 + 0x644), if the 'perms' flag was set to 0. (Bug reported by Ben Crowell.) + Follow maxthreads preference when transferring directories. @@ -491,7 +504,7 @@ Changes in Version 2.51.3 * The backup functionality has been completely rewritten. The external interface has not changed, but numerous bugs, irregular behaviors, and cross-platform inconsistencies have been corrected. - * The Unison project now accepts donations via PayPal. If you’d like + * The Unison project now accepts donations via PayPal. If you'd like to donate, you can find a link to the donation page on the Unison home page (http://www.cis.upenn.edu/ bcpierce/unison/lists.html). * Some important safety improvements: @@ -501,13 +514,13 @@ Changes in Version 2.51.3 to avoid potentially dangerous situations when Unison is used with removable media such as external hard drives and compact flash cards. - + The confirmation of “big deletes” is now controlled by a + + The confirmation of "big deletes" is now controlled by a boolean preference confirmbigdeletes. Default is true, which gives the same behavior as previously. (This functionality is at least partly superseded by the mountpoint preference, but it has been left in place in case it is useful to some people.) - + If Unison is asked to “follow” a symbolic link but there is + + If Unison is asked to "follow" a symbolic link but there is nothing at the other end of the link, it will now flag this path as an error, rather than treating the symlink itself as missing or deleted. This avoids a potentially dangerous @@ -527,10 +540,10 @@ Changes in Version 2.51.3 cross-platform issues). + Refined debugging code so that the verbosity of individual modules can be controlled separately. Instead of just putting - ’-debug verbose’ on the command line, you can put ’-debug - update+’, which causes all the extra messages in the Update - module, but not other modules, to be printed. Putting ’-debug - verbose’ causes all modules to print with maximum verbosity. + '-debug verbose' on the command line, you can put '-debug + update+', which causes all the extra messages in the Update + module, but not other modules, to be printed. Putting '-debug + verbose' causes all modules to print with maximum verbosity. + Removed mergebatch preference. (It never seemed very useful, and its semantics were confusing.) + Rewrote some of the merging functionality, for better @@ -542,8 +555,8 @@ Changes in Version 2.51.3 succession from a script. + Diff and merge functions now work under Windows. + Changed the order of arguments to the default diff command (so - that the + and - annotations in diff’s output are reversed). - + Added .mpp files to the “never fastcheck” list (like .xls + that the + and - annotations in diff's output are reversed). + + Added .mpp files to the "never fastcheck" list (like .xls files). * Many small bugfixes, including: + Fixed a longstanding bug regarding fastcheck and daylight @@ -568,7 +581,7 @@ Changes in Version 2.51.3 transport (thanks to Jerome Vouillon) + Enable diff if file contents have changed in one replica, but only properties in the other. - + Removed misleading documentation for ’repeat’ preference. + + Removed misleading documentation for 'repeat' preference. + Fixed a bug in merging code where Unison could sometimes deadlock with the external merge program, if the latter produced large amounts of output. @@ -576,8 +589,8 @@ Changes in Version 2.51.3 current versions of gtk2+ libraries. + Added a better error message for "ambiguous paths". + Squashed a longstanding bug that would cause file transfer to - fail with the message “Failed: Error in readWrite: Is a - directory.” + fail with the message "Failed: Error in readWrite: Is a + directory." + Replaced symlinks with copies of their targets in the Growl framework in src/uimac. This should make the sources easier to check out from the svn repository on WinXP systems. @@ -605,7 +618,7 @@ Changes in Version 2.51.3 compiled with the CVS version of the OCaml compiler, where the bug has been fixed; however, ipv4 should continue to work normally.) * OSX interface: - + Incorporated Ben Willmore’s cool new icon for the Mac UI. + + Incorporated Ben Willmore's cool new icon for the Mac UI. * Small fixes: + Fixed off by one error in month numbers (in printed dates) reported by Bob Burger @@ -616,10 +629,10 @@ Changes in Version 2.51.3 version number (X.Y) will be considered significant when checking compatibility between client and server versions. The third component of the version number will be used only to identify - “patch levels” of releases. + "patch levels" of releases. This change goes hand in hand with a change to the procedure for making new releases. Candidate releases will initially be given - “beta release” status when they are announced for public + "beta release" status when they are announced for public consumption. Any bugs that are discovered will be fixed in a separate branch of the source repository (without changing the major version number) and new tarballs re-released as needed. When @@ -648,7 +661,7 @@ Changes in Version 2.51.3 with the GTK2 UI under Linux. (Hopefully the Mac OS X one is not broken!) + Include profile name in the GTK2 window name - + Added bindings ’,’ (same as ’<’) and ’.’ (same as ’>’) in the + + Added bindings ',' (same as '<') and '.' (same as '>') in the GTK2 UI * Mac GUI: + actions like < and > scroll to the next item as necessary. @@ -697,11 +710,11 @@ Changes in Version 2.51.3 possible, like this: svn co https://cvs.cis.upenn.edu:3690/svnroot/unison/ - We will also continue to export a “developer tarball” of the + We will also continue to export a "developer tarball" of the current (modulo one day) sources in the web export directory. To receive commit logs for changes to the sources, subscribe to the - unison-hackers list - (http://www.cis.upenn.edu/ bcpierce/unison/lists.html). + unison-hackers list (http://www.cis.upenn.edu/ + bcpierce/unison/lists.html). * Text user interface: + Substantial reworking of the internal logic of the text UI to make it a bit easier to modify. @@ -728,20 +741,20 @@ Changes in Version 2.51.3 + Use buffered I/O for files (this is the only way to open files in binary mode under Cygwin). + On non-Cygwin Windows systems, the UNISON environment variable - is now checked first to determine where to look for Unison’s + is now checked first to determine where to look for Unison's archive and preference files, followed by HOME and USERPROFILE in that order. On Unix and Cygwin systems, HOME is used. + Generalized diff preference so that it can be given either as just the command name to be used for calculating diffs or else a whole command line, containing the strings CURRENT1 and CURRENT2, which will be replaced by the names of the files to - be diff’ed before the command is called. + be diff'ed before the command is called. + Recognize password prompts in some newer versions of ssh. Changes since 2.9.20: * INCOMPATIBLE CHANGE: Archive format has changed. * Major functionality changes: - + Major tidying and enhancement of ’merge’ functionality. The + + Major tidying and enhancement of 'merge' functionality. The main user-visible change is that the external merge program may either write the merged output to a single new file, as before, or it may modify one or both of its input files, or it @@ -761,7 +774,7 @@ Changes in Version 2.51.3 HFS with non-HFS volumes.) Synchronization of file type and creator information is also supported. o On OSX systems, the name of the directory for storing - Unison’s archives, preference files, etc., is now + Unison's archives, preference files, etc., is now determined as follows: # if ~/.unison exists, use it # otherwise, use ~/Library/Application Support/Unison, @@ -792,8 +805,8 @@ Changes in Version 2.51.3 If you have been setting ignorecase on the command line using -ignorecase=true or -ignorecase=false, you will need to change to -ignorecase true or -ignorecase false. - + a new preference, ’repeat’, for the text user interface - (only). If ’repeat’ is set to a number, then, after it + + 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 @@ -805,19 +818,19 @@ Changes in Version 2.51.3 propagation.) + 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 + '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 + or Windows. Setting ignorecase to 'true' or 'false' overrides this behavior. - + Added a new preference, ’repeat’, for the text user interface - (only, at the moment). If ’repeat’ is set to a number, then, + + 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. - + 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, + + 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. * Documentation + The web pages have been completely redesigned and reorganized. @@ -830,16 +843,16 @@ Changes in Version 2.51.3 at the end of synchronization. + Restarting update detection from the graphical UI will reload the current profile (which in particular will reset the -path - preference, in case it has been narrowed by using the “Recheck - unsynchronized items” command). + preference, in case it has been narrowed by using the "Recheck + unsynchronized items" command). + Several small improvements to the text user interface, including a progress display. * Bug fixes (too numerous to count, actually, but here are some): + The maxthreads preference works now. + Fixed bug where warning message about uname returning an unrecognized result was preventing connection to server. (The - warning is no longer printed, and all systems where ’uname’ - returns anything other than ’Darwin’ are assumed not to be + warning is no longer printed, and all systems where 'uname' + returns anything other than 'Darwin' are assumed not to be running OS X.) + Fixed a problem on OS X that caused some valid file names (e.g., those including colons) to be considered invalid. @@ -847,9 +860,9 @@ Changes in Version 2.51.3 addition to Unix (suggested by Matt Swift). + Small change to the storeRootsName function, suggested by bliviero at ichips.intel.com, to fix a problem in unison with - the ‘rootalias’ option, which allows you to tell unison that + the `rootalias' option, which allows you to tell unison that two roots contain the same files. Rootalias was being applied - after the hosts were sorted, so it wouldn’t work properly in + after the hosts were sorted, so it wouldn't work properly in all cases. + Incorporated a fix by Dmitry Bely for setting utimes of read-only files on Win32 systems. @@ -869,8 +882,8 @@ Changes in Version 2.51.3 stored. * Basic support added for OSX. In particular, Unison now recognizes when one of the hosts being synchronized is running OSX and - switches to a case-insensitive treatment of filenames (i.e., ’foo’ - and ’FOO’ are considered to be the same file). (OSX is not yet + switches to a case-insensitive treatment of filenames (i.e., 'foo' + and 'FOO' are considered to be the same file). (OSX is not yet fully working, however: in particular, files with resource forks will not be synchronized correctly.) * The same hash used to form the archive name is now also added to @@ -891,13 +904,13 @@ Changes in Version 2.51.3 * Makefile + Makefile.OCaml now sets UISTYLE=text or UISTYLE=gtk automatically, depending on whether it finds lablgtk installed - + Unison should now compile “out of the box” under OSX + + Unison should now compile "out of the box" under OSX Changes since 2.8.1: * Changing profile works again under Windows * File movement optimization: Unison now tries to use local copy instead of transfer for moved or copied files. It is controlled by - a boolean option “xferbycopying”. + a boolean option "xferbycopying". * Network statistics window (transfer rate, amount of data transferred). [NB: not available in Windows-Cygwin version.] * symlinks work under the cygwin version (which is dynamically @@ -917,7 +930,7 @@ Changes in Version 2.51.3 the basic utility modules so that the non-unison-specific stuff can be made available for other projects.) + several Makefile and docs changes (for release); - + further comments in “update.ml”; + + further comments in "update.ml"; + connection information is not stored in global variables anymore. @@ -931,9 +944,9 @@ Changes in Version 2.51.3 now both accessible). * User manual revised. * Added some new preferences: - + “sshcmd” and “rshcmd” for specifying paths to ssh and rsh + + "sshcmd" and "rshcmd" for specifying paths to ssh and rsh programs. - + “contactquietly” for suppressing the “contacting server” + + "contactquietly" for suppressing the "contacting server" message during Unison startup (under the graphical UI). * Bug fixes: + Fixed small bug in UI that neglected to change the displayed @@ -943,14 +956,14 @@ Changes in Version 2.51.3 if it encountered a conflict when run in batch mode. + Added some code to try to fix the display of non-Ascii characters in filenames on Windows systems in the GTK UI. - (This code is currently untested—if you’re one of the people + (This code is currently untested--if you're one of the people that had reported problems with display of non-ascii - filenames, we’d appreciate knowing if this actually fixes + filenames, we'd appreciate knowing if this actually fixes things.) - + ‘-prefer/-force newer’ works properly now. (The bug was + + `-prefer/-force newer' works properly now. (The bug was reported by Sebastian Urbaniak and Sean Fulton.) * User interface and Unison behavior: - + Renamed ‘Proceed’ to ‘Go’ in the graphical UI. + + Renamed `Proceed' to `Go' in the graphical UI. + Added exit status for the textual user interface. + Paths that are not synchronized because of conflicts or errors during update detection are now noted in the log file. @@ -980,7 +993,7 @@ Changes in Version 2.51.3 user. They take the form .#..unison.tmp. [N.b. This was later changed to .unison...unison.tmp.] - * Added a new command to the GTK user interface: pressing ’f’ causes + * Added a new command to the GTK user interface: pressing 'f' causes Unison to start a new update detection phase, using as paths just those paths that have been detected as changed and not yet marked as successfully completed. Use this command to quickly restart @@ -992,7 +1005,7 @@ Changes in Version 2.51.3 using Unison running on a Unix system with a FAT volume mounted.) * Small improvements and bug fixes: + Errors in preference files now generate fatal errors rather - than warnings at startup time. (I.e., you can’t go on from + than warnings at startup time. (I.e., you can't go on from them.) Also, we fixed a bug that was preventing these warnings from appearing in the text UI, so some users who have been running (unsuspectingly) with garbage in their prefs files may @@ -1000,13 +1013,13 @@ Changes in Version 2.51.3 + Error reporting for preference files now provides file name and line number. + More intelligible message in the case of identical change to - the same files: “Nothing to do: replicas have been changed - only in identical ways since last sync.” - + Files with prefix ’.#’ excluded when scanning for preference + the same files: "Nothing to do: replicas have been changed + only in identical ways since last sync." + + Files with prefix '.#' excluded when scanning for preference files. + Rsync instructions are send directly instead of first marshaled. - + Won’t try forever to get the fingerprint of a continuously + + Won't try forever to get the fingerprint of a continuously changing file: unison will give up after certain number of retries. + Other bug fixes, including the one reported by Peter Selinger @@ -1028,8 +1041,8 @@ Changes in Version 2.51.3 preference file new preferences (e.g. new ignore patterns) are added to. * Bug fix: read the initial connection header one byte at a time, so - that we don’t block if the header is shorter than expected. (This - bug did not affect normal operation — it just made it hard to tell + that we don't block if the header is shorter than expected. (This + bug did not affect normal operation -- it just made it hard to tell when you were trying to use Unison incorrectly with an old version of the server, since it would hang instead of giving an error message.) @@ -1037,14 +1050,14 @@ Changes in Version 2.51.3 Changes since 2.6.59: * Changed fastcheck from a boolean to a string preference. Its legal values are yes (for a fast check), no (for a safe check), or - default (for a fast check—which also happens to be safe—when + default (for a fast check--which also happens to be safe--when running on Unix and a safe check when on Windows). The default is default. * Several preferences have been renamed for consistency. All preference names are now spelled out in lowercase. For backward compatibility, the old names still work, but they are not mentioned in the manual any more. - * The temp files created by the ’diff’ and ’merge’ commands are now + * The temp files created by the 'diff' and 'merge' commands are now named by prepending a new prefix to the file name, rather than appending a suffix. This should avoid confusing diff/merge programs that depend on the suffix to guess the type of the file contents. @@ -1060,12 +1073,12 @@ Changes in Version 2.51.3 Changes since 2.6.38: * Major Windows performance improvement! - We’ve added a preference fastcheck that makes Unison look only at a - file’s creation time and last-modified time to check whether it has + We've added a preference fastcheck that makes Unison look only at a + file's creation time and last-modified time to check whether it has changed. This should result in a huge speedup when checking for updates in large replicas. When this switch is set, Unison will use file creation times as - ’pseudo inode numbers’ when scanning Windows replicas for updates, + 'pseudo inode numbers' when scanning Windows replicas for updates, instead of reading the full contents of every file. This may cause Unison to miss propagating an update if the create time, modification time, and length of the file are all unchanged by the @@ -1090,14 +1103,14 @@ Changes in Version 2.51.3 o Unison now maintains full backups of the last-synchronized versions of (some of) the files in each replica; these function both as backups in the usual - sense and as the “common version” when invoking external + sense and as the "common version" when invoking external merge programs. o The backed up files are stored in a directory /.unison/backup on each host. (The name of this directory can be changed by setting the environment variable UNISONBACKUPDIR.) o The predicate backup controls which files are actually - backed up: giving the preference ’backup = Path *’ causes + backed up: giving the preference 'backup = Path *' causes backing up of all files. o Files are added to the backup directory whenever unison updates its archive. This means that @@ -1118,8 +1131,8 @@ Changes in Version 2.51.3 checks that its fingerprint matches the one that it expects. + Merging: - o Both user interfaces offer a new ’merge’ command, invoked - by pressing ’m’ (with a changed file selected). + o Both user interfaces offer a new 'merge' command, invoked + by pressing 'm' (with a changed file selected). o The actual merging is performed by an external program. The preferences merge and merge2 control how this program is invoked. If a backup exists for this file (see the @@ -1172,20 +1185,20 @@ Changes in Version 2.51.3 editor preference controls what editor is invoked by Unison. The default is emacs. o Please send us suggestions for other useful values of the - merge2 and merge preferences – we’d like to give several + merge2 and merge preferences - we'd like to give several examples in the manual. * Smaller changes: + When one preference file includes another, unison no longer - adds the suffix ’.prf’ to the included file by default. If a + adds the suffix '.prf' to the included file by default. If a file with precisely the given name exists in the .unison directory, it will be used; otherwise Unison will add .prf, as it did before. (This change means that included preference files can be named blah.include instead of blah.prf, so that - unison will not offer them in its ’choose a preference file’ + unison will not offer them in its 'choose a preference file' dialog.) + For Linux systems, we now offer both a statically linked and a dynamically linked executable. The static one is larger, but - will probably run on more systems, since it doesn’t depend on + will probably run on more systems, since it doesn't depend on the same versions of dynamically linked library modules being available. + Fixed the force and prefer preferences, which were getting the @@ -1197,7 +1210,7 @@ Changes in Version 2.51.3 Unison would confusingly display the roots in reverse order in the user interface. * For developers: - + We’ve added a module dependency diagram to the source + + We've added a module dependency diagram to the source distribution, in src/DEPENDENCIES.ps, to help new prospective developers with navigating the code. @@ -1233,29 +1246,29 @@ Changes in Version 2.51.3 older/newer options can only be used when -times is also set. The graphical user interface provides access to these facilities on a one-off basis via the Actions menu. - * Names of roots can now be “aliased” to allow replicas to be + * Names of roots can now be "aliased" to allow replicas to be relocated without changing the name of the archive file where Unison stores information between runs. (This feature is for - experts only. See the “Archive Files” section of the manual for + experts only. See the "Archive Files" section of the manual for more information.) * Graphical user-interface: + A new command is provided in the Synchronization menu for switching to a new profile without restarting Unison from scratch. + The GUI also supports one-key shortcuts for commonly used - profiles. If a profile contains a preference of the form ’key - = n’, where n is a single digit, then pressing this key will + profiles. If a profile contains a preference of the form 'key + = n', where n is a single digit, then pressing this key will cause Unison to immediately switch to this profile and begin synchronization again from scratch. (Any actions that may have been selected for a set of changes currently being displayed will be discarded.) - + Each profile may include a preference ’label = ’ + + Each profile may include a preference 'label = ' giving a descriptive string that described the options selected in this profile. The string is listed along with the profile name in the profile selection dialog, and displayed in the top-right corner of the main Unison window. * Minor: - + Fixed a bug that would sometimes cause the ’diff’ display to + + Fixed a bug that would sometimes cause the 'diff' display to order the files backwards relative to the main user interface. (Thanks to Pascal Brisset for this fix.) + On Unix systems, the graphical version of Unison will check @@ -1325,11 +1338,11 @@ Changes in Version 2.51.3 the set-uid and set-gid bits are synchronised (synchronizing theses latter bits can be a security hazard). If you want to synchronize all bits, you can set the value of this preference - to −1. + to -1. + Added a log preference (default false), which makes Unison keep a complete record of the changes it makes to the replicas. By default, this record is written to a file called - unison.log in the user’s home directory (the value of the HOME + unison.log in the user's home directory (the value of the HOME environment variable). If you want it someplace else, set the logfile preference to the full pathname you want Unison to use. @@ -1364,17 +1377,17 @@ Changes in Version 2.51.3 synchronized) normally uses the gethostname operating system call. However, if the environment variable UNISONLOCALHOSTNAME is set, its value will now be used instead. This makes it - easier to use Unison in situations where a machine’s name + easier to use Unison in situations where a machine's name changes frequently (e.g., because it is a laptop and gets moved around a lot). - + File owner and group are now displayed in the “detail window” + + File owner and group are now displayed in the "detail window" at the bottom of the screen, when unison is configured to synchronize them. * For hackers: - + Updated to Jacques Garrigue’s new version of lablgtk, which + + Updated to Jacques Garrigue's new version of lablgtk, which means we can throw away our local patched version. - If you’re compiling the GTK version of unison from sources, - you’ll need to update your copy of lablgtk to the developers + If you're compiling the GTK version of unison from sources, + you'll need to update your copy of lablgtk to the developers release. (Warning: installing lablgtk under Windows is currently a bit challenging.) + The TODO.txt file (in the source distribution) has been @@ -1391,12 +1404,12 @@ Changes in Version 2.51.3 away during the connection setup handshake, rather than later. (Somebody sent a bug report of a server crash that turned out to come from using inconsistent versions: better to check this - earlier and in a way that can’t crash either client or + earlier and in a way that can't crash either client or server.) + Unison now runs correctly on 64-bit architectures (e.g. Alpha linux). We will not be distributing binaries for these architectures ourselves (at least for a while) but if someone - would like to make them available, we’ll be glad to provide a + would like to make them available, we'll be glad to provide a link to them. * Bug fixes: + Pattern matching (e.g. for ignore) is now case-insensitive @@ -1409,7 +1422,7 @@ Changes in Version 2.51.3 + Numerous smaller fixes. Changes since 2.4.1: - * Added a number of ’sorting modes’ for the user interface. By + * Added a number of 'sorting modes' for the user interface. By default, conflicting changes are displayed at the top, and the rest of the entries are sorted in alphabetical order. This behavior can be changed in the following ways: @@ -1418,15 +1431,15 @@ Changes in Version 2.51.3 + Setting sortbysize causes files to be displayed in increasing order of size. + Giving the preference sortfirst= (where is - a path descriptor in the same format as ’ignore’ and ’follow’ + a path descriptor in the same format as 'ignore' and 'follow' patterns, causes paths matching this pattern to be displayed first. + Similarly, giving the preference sortlast= causes paths matching this pattern to be displayed last. The sorting preferences are described in more detail in the user manual. The sortnewfirst and sortbysize flags can also be accessed - from the ’Sort’ menu in the grpahical user interface. - * Added two new preferences that can be used to change unison’s + from the 'Sort' menu in the grpahical user interface. + * Added two new preferences that can be used to change unison's fundamental behavior to make it more like a mirroring tool instead of a synchronizer. + Giving the preference prefer with argument (by adding @@ -1441,18 +1454,18 @@ Changes in Version 2.51.3 These options should be used with care! (More information is available in the manual.) * Small changes: - + Changed default answer to ’Yes’ in all two-button dialogs in + + Changed default answer to 'Yes' in all two-button dialogs in the graphical interface (this seems more intuitive). + The rsync preference has been removed (it was used to activate rsync compression for file transfers, but rsync compression is now enabled by default). + In the text user interface, the arrows indicating which direction changes are being propagated are printed differently - when the user has overridden Unison’s default recommendation + when the user has overridden Unison's default recommendation (====> instead of ---->). This matches the behavior of the graphical interface, which displays such arrows in a different color. - + Carriage returns (Control-M’s) are ignored at the ends of + + Carriage returns (Control-M's) are ignored at the ends of lines in profiles, for Windows compatibility. + All preferences are now fully documented in the user manual. @@ -1484,10 +1497,10 @@ Changes in Version 2.51.3 all, but AFAIK this was never true. + In all user interfaces, files with conflicts are always listed first - + A new preference ’sshversion’ can be used to control which + + A new preference 'sshversion' can be used to control which version of ssh should be used to connect to the server. Legal values are 1 and 2. (Default is empty, which will make unison - use whatever version of ssh is installed as the default ’ssh’ + use whatever version of ssh is installed as the default 'ssh' command.) + The situation when the permissions of a file was updated the same on both side is now handled correctly (we used to report @@ -1504,12 +1517,12 @@ Changes in Version 2.51.3 * Improvements to the GTK user interface (the Tk interface is no longer being maintained): + The UI now displays actions differently (in blue) when they - have been explicitly changed by the user from Unison’s default + have been explicitly changed by the user from Unison's default recommendation. + More colorful appearance. + The initial profile selection window works better. + If any transfers failed, a message to this effect is displayed - along with ’Synchronization complete’ at the end of the + along with 'Synchronization complete' at the end of the transfer phase (in case they may have scrolled off the top). + Added a global progress meter, displaying the percentage of total bytes that have been transferred so far. @@ -1522,9 +1535,9 @@ Changes in Version 2.51.3 + The UI now displays a short list of possible inputs each time it waits for user interaction. + The UI now quits immediately (rather than looping back and - starting the interaction again) if the user presses ’q’ when + starting the interaction again) if the user presses 'q' when asked whether to propagate changes. - + Pressing ’g’ in the text user interface will proceed + + Pressing 'g' in the text user interface will proceed immediately with propagating updates, without asking any more questions. * Documentation and installation changes: @@ -1532,7 +1545,7 @@ Changes in Version 2.51.3 problems and on tricks contributed by users. + Both the download page and the download directory explicitly say what are the current stable and beta-test version numbers. - + The OCaml sources for the up-to-the-minute developers’ version + + The OCaml sources for the up-to-the-minute developers' version (not guaranteed to be stable, or even to compile, at any given time!) are now available from the download page. + Added a subsection to the manual describing cross-platform @@ -1542,7 +1555,7 @@ Changes in Version 2.51.3 Changes since 2.3.1: * Several bug fixes. The most important is a bug in the rsync module that would occasionally cause change propagation to fail with a - ’rename’ error. + 'rename' error. Changes since 2.2: * The multi-threaded transport system is now disabled by default. (It @@ -1558,25 +1571,25 @@ Changes in Version 2.51.3 being interpreted by your shell. If both roots are local, the contents of the first one will be used for expanding wildcard paths. (Nb: this is the first one after the - canonization step – i.e., the one that is listed first in the user - interface – not the one listed first on the command line or in the + canonization step - i.e., the one that is listed first in the user + interface - not the one listed first on the command line or in the preferences file.) Changes since 2.1: * The transport subsystem now includes an implementation by Sylvain - Gommier and Norman Ramsey of Tridgell and Mackerras’s rsync + Gommier and Norman Ramsey of Tridgell and Mackerras's rsync protocol. This protocol achieves much faster transfers when only a small part of a large file has been changed by sending just diffs. - This feature is mainly helpful for transfers over slow links—on - fast local area networks it can actually degrade performance—so we + This feature is mainly helpful for transfers over slow links--on + fast local area networks it can actually degrade performance--so we have left it off by default. Start unison with the -rsync option (or put rsync=true in your preferences file) to turn it on. - * “Progress bars” are now displayed during remote file transfers, + * "Progress bars" are now displayed during remote file transfers, showing what percentage of each file has been transferred so far. * The version numbering scheme has changed. New releases will now be have numbers like 2.2.30, where the second component is incremented on every significant public release and the third component is the - “patch level.” + "patch level." * Miscellaneous improvements to the GTK-based user interface. * The manual is now available in PDF format. * We are experimenting with using a multi-threaded transport @@ -1584,7 +1597,7 @@ Changes in Version 2.51.3 more effective use of available network bandwidth. This feature is not completely stable yet, so by default it is disabled in the release version of Unison. - If you want to play with the multi-threaded version, you’ll need to + If you want to play with the multi-threaded version, you'll need to recompile Unison from sources (as described in the documentation), setting the THREADS flag in Makefile.OCaml to true. Make sure that your OCaml compiler has been installed with the -with-pthreads @@ -1611,16 +1624,16 @@ Changes in Version 2.51.3 off by default in the current version. Use the -rsync switch to turn it on. (Nb. We still have a lot of tuning to do: you may not notice much speedup yet.) - * We’re experimenting with a multi-threaded transport subsystem, + * We're experimenting with a multi-threaded transport subsystem, written by Jerome Vouillon. The downloadable binaries are still single-threaded: if you want to try the multi-threaded version, - you’ll need to recompile from sources. (Say make THREADS=true.) + you'll need to recompile from sources. (Say make THREADS=true.) Native thread support from the compiler is required. Use the option -threads N to select the maximal number of concurrent threads (default is 5). Multi-threaded and single-threaded clients/servers can interoperate. * A new GTK-based user interface is now available, thanks to Jacques - Garrigue. The Tk user interface still works, but we’ll be shifting + Garrigue. The Tk user interface still works, but we'll be shifting development effort to the GTK interface from now on. * OCaml 3.00 is now required for compiling Unison from sources. The modules uitk and myfileselect have been changed to use labltk @@ -1651,21 +1664,21 @@ Changes in Version 2.51.3 + Fixed some bugs related to symnbolic links and nonexistent roots. o When a change (deletion or new contents) is propagated - onto a ’follow’ed symlink, the file pointed to by the + onto a 'follow'ed symlink, the file pointed to by the link is now changed. (We used to change the link itself, - which doesn’t fit our assertion that ’follow’ means the + which doesn't fit our assertion that 'follow' means the link is completely invisible) o When one root did not exist, propagating the other root on top of it used to fail, because unison could not calculate the working directory into which to write changes. This should be fixed. - * A human-readable timestamp has been added to Unison’s archive + * A human-readable timestamp has been added to Unison's archive files. * The semantics of Path and Name regular expressions now correspond better. * Some minor improvements to the text UI (e.g. a command for going back to previous items) - * The organization of the export directory has changed — should be + * The organization of the export directory has changed -- should be easier to find / download things now. Changes since 1.200: @@ -1725,7 +1738,7 @@ Changes in Version 2.51.3 ignore = Path matches exactly the path . - Standard “globbing” conventions can be used in and : + Standard "globbing" conventions can be used in and : + a ? matches any single character except / + a * matches any sequence of characters not including / + [xyz] matches any character from the set {x, y, z } @@ -1742,30 +1755,30 @@ Changes in Version 2.51.3 Changes since 1.142: * Major internal tidying and many small bugfixes. * Major additions to the user manual. - * Unison can now be started with no arguments – it will prompt + * Unison can now be started with no arguments - it will prompt automatically for the name of a profile file containing the roots to be synchronized. This makes it possible to start the graphical UI from a desktop icon. - * Fixed a small bug where the text UI on NT was raising a ’no such - signal’ exception. + * Fixed a small bug where the text UI on NT was raising a 'no such + signal' exception. Changes since 1.139: * The precompiled windows binary in the last release was compiled with an old OCaml compiler, causing propagation of permissions not - to work (and perhaps leading to some other strange behaviors we’ve - heard reports about). This has been corrected. If you’re using + to work (and perhaps leading to some other strange behaviors we've + heard reports about). This has been corrected. If you're using precompiled binaries on Windows, please upgrade. * Added a -debug command line flag, which controls debugging of various modules. Say -debug XXX to enable debug tracing for module XXX, or -debug all to turn on absolutely everything. - * Fixed a small bug where the text UI on NT was raising a ’no such - signal’ exception. + * Fixed a small bug where the text UI on NT was raising a 'no such + signal' exception. Changes since 1.111: * INCOMPATIBLE CHANGE: The names and formats of the preference files in the .unison directory have changed. In particular: - + the file “prefs” should be renamed to default.prf - + the contents of the file “ignore” should be merged into + + the file "prefs" should be renamed to default.prf + + the contents of the file "ignore" should be merged into default.prf. Each line of the form REGEXP in ignore should become a line of the form ignore = REGEXP in default.prf. * Unison now handles permission bits and symbolic links. See the @@ -1774,7 +1787,7 @@ Changes in Version 2.51.3 directory. If you start unison like this unison profilename - (i.e. with just one “anonymous” command-line argument), then the + (i.e. with just one "anonymous" command-line argument), then the file ~/.unison/profilename.prf will be loaded instead of default.prf. * Some improvements to terminal handling in the text user interface @@ -1783,8 +1796,8 @@ Changes in Version 2.51.3 sockets for communication. (By default, a remote server created using ssh/rsh is terminated automatically, while a socket server is left running.) - * When started in ’socket server’ mode, unison prints ’server - started’ on stderr when it is ready to accept connections. (This + * When started in 'socket server' mode, unison prints 'server + started' on stderr when it is ready to accept connections. (This may be useful for scripts that want to tell when a socket-mode server has finished initialization.) * We now make a nightly mirror of our current internal development