diff --git a/fix_makefile.patch b/fix_makefile.patch
new file mode 100644
index 0000000..3269b36
--- /dev/null
+++ b/fix_makefile.patch
@@ -0,0 +1,12 @@
+diff -Naur a/Makefile b/Makefile
+--- a/Makefile 2010-10-08 17:44:59.000000000 +0200
++++ b/Makefile 2011-01-29 18:57:31.334257694 +0100
+@@ -60,7 +60,7 @@
+ # NAME, VERSION, and MAJORVERSION, automatically generated
+ -include Makefile.ProjectInfo
+
+-Makefile.ProjectInfo: mkProjectInfo.ml $(wildcard ../.bzr/branch/last-revision)
++Makefile.ProjectInfo: mkProjectInfo $(wildcard ../.bzr/branch/last-revision)
+ ./mkProjectInfo > $@
+
+ mkProjectInfo: mkProjectInfo.ml
diff --git a/unison-2.32.52.tar.gz b/unison-2.32.52.tar.gz
deleted file mode 100644
index b6d3d1e..0000000
--- a/unison-2.32.52.tar.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1542e5d4ad03e928260e061a8ff9d5e0bca3282481ed8bec5552de17a0270485
-size 697866
diff --git a/unison-2.32.52-manual.html b/unison-2.40.61-manual.html
similarity index 90%
rename from unison-2.32.52-manual.html
rename to unison-2.40.61-manual.html
index 60c1145..04ea2e5 100644
--- a/unison-2.32.52-manual.html
+++ b/unison-2.40.61-manual.html
@@ -36,7 +36,7 @@ BLOCKQUOTE{margin-left:4ex;margin-right:4ex;text-align:left;}
@@ -58,6 +58,7 @@ BLOCKQUOTE{margin-left:4ex;margin-right:4ex;text-align:left;}
•Upgrading
•Building Unison from Scratch
Unix
+ Mac OS X
Windows
Installation Options
Tutorial
@@ -104,7 +105,7 @@ BLOCKQUOTE{margin-left:4ex;margin-right:4ex;text-align:left;}
Installing Ssh
•Unix
•Windows
-Changes in Version 2.32.52
+Changes in Version 2.40.61
@@ -187,7 +188,7 @@ Our implementation of the
rsync
protocol was built by
Norman Ramsey
- and Sylvain Gommier. It is is based on
+ and Sylvain Gommier. It is based on
Andrew Tridgell's
thesis work
and inspired by his
@@ -301,7 +302,8 @@ Unison can be used with either of two user interfaces:
-
a simple textual interface, suitable for dumb terminals (and
running from scripts), and
-
- a more sophisticated grapical interface, based on Gtk2.
+
- a more sophisticated grapical interface, based on Gtk2 (on
+ Linux/Windows) or the native UI framework (on OSX).
You will need to install a copy of Unison on every machine that you
want to synchronize. However, you only need the version with a
@@ -385,7 +387,7 @@ Solaris, Linux, FreeBSD), and on both 32- and 64-bit architectures.
Unix
-You'll need the Objective Caml compiler (version 3.07 or later), which is
+You'll need the Objective Caml compiler (version 3.11.2 or later), which is
available from http://caml.inria.fr. Building and installing OCaml
on Unix systems is very straightforward; just follow the instructions in the
distribution. You'll probably want to build the native-code compiler in
@@ -433,6 +435,27 @@ Put the unison
executable somewhere in your search path, either
by adding the Unison directory to your PATH variable or by copying the
executable to some standard directory where executables are stored.
+
+
+Mac OS X
+
+To build the text-only user interface, follow the instructions above for
+building on Unix systems. You should do this first, even if you are also
+planning on building the GUI, just to make sure it works.
+
+To build the basic GUI version, you'll first need to download and install
+the XCode developer tools from Apple. Once this is done, just type make UISTYLE=macnew in the src directory, and if things go well you
+should get an application that you can move from uimacnew/build/Default/Unison.app to wherever you want it.
+
+There is also an experimental GUI with a somewhat smoother look and feel.
+To compile this one (once you've got the basic one working), proceed as
+follows:
+-
+Go to the uimacnew09 directory and double-click the file BWToolkit.ibplugin.
+
- Go back up to the src directory and type make
+ UISTYLE=macnew09.
+
- You should get an application built for you at uimacnew09/build/Default/Unison.app.
+
Windows
@@ -544,7 +567,8 @@ will remember the current state of both directories so that it will be
able to tell next time what has changed.) Type:
unison a.tmp b.tmp
-
+(You may need to add -ui text
, depending how your unison binary was built.)
+
Textual Interface:-
@@ -578,7 +602,7 @@ direction that the change needs to be propagated. For example,
<--- new file c [f]
indicates that the file c has been modified only in the second
replica, and that the default action is therefore to propagate the new
-version to the first replica. To follw Unison's recommendation,
+version to the first replica. To follow Unison's recommendation,
press the “f” at the prompt.
If both replicas are modified and their contents are different, then
@@ -596,7 +620,7 @@ nothing is shown. Unison simply notes that the file is up to date.
These display conventions are used by both versions of the user
interface. The only difference lies in the way in which Unison's
-default actions are either accepted or overriden by the user.
+default actions are either accepted or overridden by the user.
Textual Interface:-
@@ -687,7 +711,7 @@ for installation instructions for the Windows version.
Running
ssh
requires some coordination between the client and server
machines to establish that the client is allowed to invoke commands on
-the server; please refer to the or ssh
documentation
+the server; please refer to the ssh
documentation
for information on how to set this up. The examples in this section
use ssh
, but you can substitute rsh
for ssh
if
you wish.
@@ -1166,7 +1190,7 @@ In particular, the Unix
file has not been changed.
Under normal circumstances, this approximation is safe, in the sense
- that it may sometimes detect “false updates” will never miss a real
+ that it may sometimes detect “false updates” but will never miss a real
one. However, it is possible to fool it, for example by using
retouch
to change a file's modtime back to a time in the past.
@@ -1193,7 +1217,7 @@ middle of detecting changes or propagating files.
- Unison does not understand hard links.
- It is important to be a little careful when renaming directories
-containing “ignore”d files.
+containing ignored files.
For example, suppose Unison is synchronizing directory A between the two
machines called the “local” and the “remote” machine; suppose directory
@@ -1359,15 +1383,16 @@ Basic options:
-auto automatically accept default (nonconflicting) actions
-batch batch mode: ask no questions at all
-doc xxx show documentation ('-doc topics' lists topics)
- -follow xxx add a pattern to the follow list
- -force xxx force changes from this replica to the other
+ -fat use appropriate options for FAT filesystems
-group synchronize group attributes
-ignore xxx add a pattern to the ignore list
-ignorenot xxx add a pattern to the ignorenot list
+ -nocreation xxx prevent file creations on one replica
+ -nodeletion xxx prevent file deletions on one replica
+ -noupdate xxx prevent file updates and deletions on one replica
-owner synchronize owner
-path xxx path to synchronize
-perms n part of the permissions which is synchronized
- -prefer xxx choose this replica's version for conflicting changes
-root xxx root of a replica (should be used exactly twice)
-silent print nothing except error messages
-terse suppress status messages
@@ -1390,34 +1415,45 @@ Advanced options:
-confirmbigdel ask about whole-replica (or path) deletes (default true)
-confirmmerge ask for confirmation before commiting results of a merge
-contactquietly suppress the 'contacting server' message during startup
+ -copymax n maximum number of simultaneous copyprog transfers
-copyprog xxx external program for copying large files
-copyprogrest xxx variant of copyprog for resuming partial transfers
-copyquoterem xxx add quotes to remote file name for copyprog (true/false/default)
-copythreshold n use copyprog on files bigger than this (if >=0, in Kb)
-debug xxx debug module xxx ('all' -> everything, 'verbose' -> more)
- -diff xxx command for showing differences between files
- -dontchmod When set, never use the chmod system call
+ -diff xxx set command for showing differences between files
+ -dontchmod when set, never use the chmod system call
-dumbtty do not change terminal settings in text UI (default true)
-fastcheck xxx do fast update detection (true/false/default)
+ -follow xxx add a pattern to the follow list
+ -force xxx force changes from this replica to the other
-forcepartial xxx add a pattern to the forcepartial list
+ -halfduplex force half-duplex communication with the server
-height n height (in lines) of main window in graphical interface
-host xxx bind the socket to this host name in server socket mode
+ -ignorearchives ignore existing archive files
-ignorecase xxx identify upper/lowercase filenames (true/false/default)
+ -ignoreinodenumbers ignore inode number changes when detecting updates
-ignorelocks ignore locks left over from previous run (dangerous!)
-immutable xxx add a pattern to the immutable list
-immutablenot xxx add a pattern to the immutablenot list
-key xxx define a keyboard shortcut for this profile (in some UIs)
-killserver kill server when done (even when using sockets)
-label xxx provide a descriptive string label for this profile
+ -links xxx allow the synchronization of symbolic links (true/false/default)
-log record actions in logfile (default true)
-logfile xxx logfile name
-maxbackups n number of backed up versions of a file
+ -maxerrors n maximum number of errors before a directory transfer is aborted
-maxthreads n maximum number of simultaneous file transfers
-merge xxx add a pattern to the merge list
-mountpoint xxx abort if this path does not exist
+ -nocreationpartial xxx add a pattern to the nocreationpartial list
+ -nodeletionpartial xxx add a pattern to the nodeletionpartial list
+ -noupdatepartial xxx add a pattern to the noupdatepartial list
-numericids don't map uid/gid values by user/group names
+ -prefer xxx choose this replica's version for conflicting changes
-preferpartial xxx add a pattern to the preferpartial list
- -pretendwin Use creation times for detecting updates
-repeat xxx synchronize repeatedly (text interface only)
-retry n re-try failed synchronizations N times (text ui only)
-rootalias xxx register alias for canonical root names
@@ -1433,7 +1469,9 @@ Advanced options:
-sortnewfirst list new before changed files
-sshargs xxx other arguments (if any) for remote shell command
-sshcmd xxx path to the ssh executable
+ -stream use a streaming protocol for transferring file contents (default true)
-ui xxx select UI ('text' or 'graphic'); command-line only
+ -unicode xxx assume Unicode encoding in case insensitive mode
-xferbycopying optimize transfers using local copies (default true)
@@ -1470,7 +1508,7 @@ If this preference is set, Unison will use it as the name of the directory used
This preference determines whether backups should be kept locally, near the original files, or in a central directory specified by the backupdir preference. If set to local
, backups will be kept in the same directory as the original files, and if set to central
, backupdir will be used instead.
- backupnot xxx
-
-The values of this preference specify paths or individual files or regular expressions that should not be backed up, even if the backup preference selects them—i.e., it selectively overrides backup. The same caveats apply here as with ignore and t ignorenot.
+The values of this preference specify paths or individual files or regular expressions that should not be backed up, even if the backup preference selects them—i.e., it selectively overrides backup. The same caveats apply here as with ignore and ignorenot.
- backupprefix xxx
-
When a backup for a file
NAME
is created, it is stored in a directory specified by backuplocation, in a file called backupprefixNAME
backupsuffix. backupprefix can include a directory name (causing Unison to keep all backup files for a given directory in a subdirectory with this name), and both backupprefix and backupsuffix can contain the string$VERSION, which will be replaced by the age of the backup (1 for the most recent, 2 for the second most recent, and so on...). This keyword is ignored if it appears in a directory name in the prefix; if it does not appear anywhere in the prefix or the suffix, it will be automatically placed at the beginning of the suffix.
@@ -1487,7 +1525,7 @@ See backupprefix for full documentation.
When this is set to true, the user interface will ask no questions at all. Non-conflicting changes will be propagated; conflicts will be skipped.
- confirmbigdel
-
-!When this is set to true, Unison will request an extra confirmation if it appears that the entire replica has been deleted, before propagating the change. If the batch flag is also set, synchronization will be aborted. When the path preference is used, the same confirmation will be requested for top-level paths. (At the moment, this flag only affects the text user interface.) See also the mountpoint preference.
+When this is set to true, Unison will request an extra confirmation if it appears that the entire replica has been deleted, before propagating the change. If the batch flag is also set, synchronization will be aborted. When the path preference is used, the same confirmation will be requested for top-level paths. (At the moment, this flag only affects the text user interface.) See also the mountpoint preference.
- confirmmerge
-
Setting this preference causes both the text and graphical interfaces to ask the user if the results of a merge command may be commited to the replica or not. Since the merge command works on temporary files, the user can then cancel all the effects of applying the merge if it turns out that the result is not satisfactory. In batch-mode, this preference has no effect. Default is false.
@@ -1495,6 +1533,9 @@ Setting this preference causes both the text and graphical interfaces to ask the
- contactquietly
-
If this flag is set, Unison will skip displaying the `Contacting server' message (which some users find annoying) during startup.
+ - copymax n
-
+A number indicating how many instances of the external copying utility Unison is allowed to run simultaneously (default to 1).
+
- copyprog xxx
-
A string giving the name of an external program that can be used to copy large files efficiently (plus command-line switches telling it to copy files in-place). The default setting invokes rsync with appropriate options—most users should not need to change it.
@@ -1531,10 +1572,13 @@ When this preference is set, Unison will create a file unison.dump on each host,
- fastcheck xxx
-
When this preference is set to
true
, Unison will use the modification time and length of a file as a
- `pseudo inode number' when scanning replicas for updates, instead of reading the full contents of every file. Under Windows, this may cause Unison to miss propagating an update if the modification time and length of the file are both unchanged by the update. However, Unison will never overwrite such an update with a change from the other replica, since it always does a safe check for updates just before propagating a change. Thus, it is reasonable to use this switch under Windows most of the time and occasionally run Unison once with fastcheck set to false
, if you are worried that Unison may have overlooked an update. The default value of the preference is auto
, which causes Unison to use fast checking on Unix replicas (where it is safe) and slow checking on Windows replicas. For backward compatibility, yes
, no
, and default
can be used in place of true
, false
, and auto
. See the Fast Checking section for more information.
+ `pseudo inode number' when scanning replicas for updates, instead of reading the full contents of every file. Under Windows, this may cause Unison to miss propagating an update if the modification time and length of the file are both unchanged by the update. However, Unison will never overwrite such an update with a change from the other replica, since it always does a safe check for updates just before propagating a change. Thus, it is reasonable to use this switch under Windows most of the time and occasionally run Unison once with fastcheck set to false
, if you are worried that Unison may have overlooked an update. For backward compatibility, yes
, no
, and default
can be used in place of true
, false
, and auto
. See the Fast Checking section for more information.
+
+ - fat
-
+When this is set to true, Unison will use appropriate options to synchronize efficiently and without error a replica located on a FAT filesystem on a non-Windows machine: do not synchronize permissions (perms = 0); never use chmod ( t dontchmod = true); treat filenames as case insensitive (ignorecase = true); do not attempt to synchronize symbolic links (links = false); ignore inode number changes when detecting updates (ignoreinodenumbers = true). Any of these change can be overridden by explicitely setting the corresponding preference in the profile.
- follow xxx
-
-Including the preference -follow pathspec causes Unison to treat symbolic links matching pathspec as `invisible' and behave as if the object pointed to by the link had appeared literally at this position in the replica. See the Symbolic Links section for more details. The syntax of pathspec> is described in the Path Specification section.
+Including the preference -follow pathspec causes Unison to treat symbolic links matching pathspec as `invisible' and behave as if the object pointed to by the link had appeared literally at this position in the replica. See the Symbolic Links section for more details. The syntax of pathspec is described in the Path Specification section.
- force xxx
-
Including the preference -force root causes Unison to resolve all differences (even non-conflicting changes) in favor of root. This effectively changes Unison from a synchronizer into a mirroring utility.
@@ -1546,14 +1590,17 @@ This preference is overridden by the forcepartial
preference.
This preference should be used only if you are sure you know what you are doing!
- forcepartial xxx
-
-Including the preference forcepartial PATHSPEC -> root causes Unison to resolve all differences (even non-conflicting changes) in favor of root for the files in PATHSPEC (see the Path Specification section for more information). This effectively changes Unison from a synchronizer into a mirroring utility.
+Including the preference forcepartial = PATHSPEC -> root causes Unison to resolve all differences (even non-conflicting changes) in favor of root for the files in PATHSPEC (see the Path Specification section for more information). This effectively changes Unison from a synchronizer into a mirroring utility.
You can also specify forcepartial PATHSPEC -> newer
(or forcepartial PATHSPEC older
) to force Unison to choose the file with the later (earlier) modtime. In this case, the -times
preference must also be enabled.
This preference should be used only if you are sure you know what you are doing!
- group
-
-When this flag is set to
true
, the group attributes of the files are synchronized. Whether the group names or the group identifiers are synchronizeddepends on the preference numerids.
+When this flag is set to true
, the group attributes of the files are synchronized. Whether the group names or the group identifiers are synchronized depends on the preference numerids.
+
+ - halfduplex
-
+When this flag is set to true, Unison network communication is forced to be half duplex (the client and the server never simultaneously emit data). If you experience unstabilities with your network link, this may help. The communication is always half-duplex when synchronizing with a Windows machine due to a limitation of Unison current implementation that could result in a deadlock.
- height n
-
Used to set the height (in lines) of the main window in the graphical user interface.
@@ -1561,8 +1608,14 @@ Used to set the height (in lines) of the main window in the graphical user inter
- ignore xxx
-
Including the preference -ignore pathspec causes Unison to completely ignore paths that match pathspec (as well as their children). This is useful for avoiding synchronizing temporary files, object files, etc. The syntax of pathspec is described in the Path Specification section, and further details on ignoring paths is found in the Ignoring Paths section.
+ - ignorearchives
-
+When this preference is set, Unison will ignore any existing archive files and behave as though it were being run for the first time on these replicas. It is not a good idea to set this option in a profile: it is intended for command-line use.
+
- ignorecase xxx
-
-When set to true, this flag causes Unison to treat filenames as case insensitive—i.e., files in the two replicas whose names differ in (upper- and lower-case) `spelling' are treated as the same file. When the flag is set to false, Unison will treat all filenames as case sensitive. Ordinarily, when the flag is set to default, filenames are automatically taken to be case-insensitive if either host is running Windows or OSX. In rare circumstances it is useful to set the flag manually (e.g. when running Unison on a Unix system with a FAT [Windows] volume mounted).
+When set to true, this flag causes Unison to treat filenames as case insensitive—i.e., files in the two replicas whose names differ in (upper- and lower-case) `spelling' are treated as the same file. When the flag is set to false, Unison will treat all filenames as case sensitive. Ordinarily, when the flag is set to default, filenames are automatically taken to be case-insensitive if either host is running Windows or OSX. In rare circumstances it may be useful to set the flag manually.
+
+ - ignoreinodenumbers
-
+When set to true, this preference makes Unison not take advantage of inode numbers during fast update detection. This switch should be used with care, as it is less safe than the standard update detection method, but it can be useful with filesystems which do not support inode numbers.
- ignorelocks
-
When this preference is set, Unison will ignore any lock files that may have been left over from a previous run of Unison that was interrupted while reading or writing archive files; by default, when Unison sees these lock files it will stop and request manual intervention. This option should be set only if you are positive that no other instance of Unison might be concurrently accessing the same archive files (e.g., because there was only one instance of unison running and it has just crashed or you have just killed it). It is probably not a good idea to set this option in a profile: it is intended for command-line use.
@@ -1584,7 +1637,7 @@ Note that the semantics of ignore and ignorenot is a
if some parent of a given path matches an ignore pattern, then
it will be skipped even if the path itself matches an ignorenot
pattern. In particular, putting ignore = Path * in your profile
- and then using t ignorenot to select particular paths to be
+ and then using ignorenot to select particular paths to be
synchronized will not work. Instead, you should use the path
preference to choose particular paths to synchronize.
@@ -1603,6 +1656,9 @@ When set to true
, this flag causes Unison to kill the remote server
- label xxx
-
Used in a profile to provide a descriptive string documenting its settings. (This is useful for users that switch between several profiles, especially using the `fast switch' feature of the graphical user interface.)
+ - links xxx
-
+When set to true, this flag causes Unison to synchronize symbolic links. When the flag is set to false, symbolic links will result in an error during update detection. Ordinarily, when the flag is set to default, symbolic links are synchronized except when one of the hosts is running Windows. In rare circumstances it may be useful to set the flag manually.
+
- log
-
When this flag is set, Unison will log all changes to the filesystems
on a file.
@@ -1615,8 +1671,11 @@ By default, logging messages will be appended to the file
- maxbackups n
-
This preference specifies the number of backup versions that will be kept by unison, for each path that matches the predicate
backup
. The default is 2.
+ - maxerrors n
-
+This preference controls after how many errors Unison aborts a directory transfer. Setting it to a large number allows Unison to transfer most of a directory even when some files fail to be copied. The default is 1. If the preference is set too high, Unison may take a long time to abort in case of repeated failures (for instance, when the disk is full).
+
- maxthreads n
-
-This preference controls how much concurrency is allowed during the transport phase. Normally, it should be set reasonably high (default is 20) to maximize performance, but when Unison is used over a low-bandwidth link it may be helpful to set it lower (e.g. to 1) so that Unison doesn't soak up all the available bandwidth.
+This preference controls how much concurrency is allowed during the transport phase. Normally, it should be set reasonably high to maximize performance, but when Unison is used over a low-bandwidth link it may be helpful to set it lower (e.g. to 1) so that Unison doesn't soak up all the available bandwidth. The default is the special value 0, which mean 20 threads when file content streaming is desactivated and 1000 threads when it is activated.
- merge xxx
-
This preference can be used to run a merge program which will create a new version for each of the files and the backup, with the last backup and the both replicas. Setting the merge preference for a path will also cause this path to be backed up, just like t backup. The syntax of pathspec>cmd is described in the Path Specification section, and further details on Merging functions are present in the Merging files section.
@@ -1624,19 +1683,43 @@ This preference can be used to run a merge program which will create a new versi
- mountpoint xxx
-
Including the preference -mountpoint PATH causes Unison to double-check, at the end of update detection, that PATH exists and abort if it does not. This is useful when Unison is used to synchronize removable media. This preference can be given more than once. See the Mount Points section.
+ - nocreation xxx
-
+Including the preference -nocreation root prevents Unison from performing any file creation on root root.
+
+This preference can be included twice, once for each root, if you want to prevent any creation.
+
+ - nocreationpartial xxx
-
+Including the preference nocreationpartial = PATHSPEC -> root prevents Unison from performing any file creation in PATHSPEC on root root (see the Path Specification section for more information). It is recommended to use BelowPath patterns when selecting a directory and all its contents.
+
+ - nodeletion xxx
-
+Including the preference -nodeletion root prevents Unison from performing any file deletion on root root.
+
+This preference can be included twice, once for each root, if you want to prevent any creation.
+
+ - nodeletionpartial xxx
-
+Including the preference nodeletionpartial = PATHSPEC -> root prevents Unison from performing any file deletion in PATHSPEC on root root (see the Path Specification section for more information). It is recommended to use BelowPath patterns when selecting a directory and all its contents.
+
+ - noupdate xxx
-
+Including the preference -noupdate root prevents Unison from performing any file update or deletion on root root.
+
+This preference can be included twice, once for each root, if you want to prevent any update.
+
+ - noupdatepartial xxx
-
+Including the preference noupdatepartial = PATHSPEC -> root prevents Unison from performing any file update or deletion in PATHSPEC on root root (see the Path Specification section for more information). It is recommended to use BelowPath patterns when selecting a directory and all its contents.
+
- numericids
-
When this flag is set to
true
, groups and users are synchronized numerically, rather than by name.
The special uid 0 and the special group 0 are never mapped via user/group names even if this preference is not set.
- owner
-
-When this flag is set to
true
, the owner attributes of the files are synchronized. Whether the owner names or the owner identifiers are synchronizeddepends on the preference extttnumerids.
+When this flag is set to true
, the owner attributes of the files are synchronized. Whether the owner names or the owner identifiers are synchronizeddepends on the preference numerids.
- path xxx
-
When no
path
preference is given, Unison will simply synchronize the two entire replicas, beginning from the given pair of roots. If one or more path
preferences are given, then Unison will synchronize only these paths and their children. (This is useful for doing a fast sync of just one directory, for example.) Note that path preferences are intepreted literally—they are not regular expressions.
- perms n
-
-The integer value of this preference is a mask indicating which permission bits should be synchronized. It is set by default to 0o1777: all bits but 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.
+The integer value of this preference is a mask indicating which permission bits should be synchronized. It is set by default to 0o1777: all bits but 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. If one of the replica is on a FAT [Windows] filesystem, you should consider using the t fat preference instead of this preference. If you need Unison not to set permissions at all, set the value of this preference to 0 and set the preference t dontchmod to t true.
- prefer xxx
-
Including the preference -prefer root causes Unison always to resolve conflicts in favor of root, rather than asking for guidance from the user. (The syntax of root is the same as for the
root
preference, plus the special values newer
and older
.)
@@ -1646,13 +1729,10 @@ This preference is overridden by the preferpartial
preference.
This preference should be used only if you are sure you know what you are doing!
- preferpartial xxx
-
-Including the preference preferpartial PATHSPEC -> root causes Unison always to resolve conflicts in favor of root, rather than asking for guidance from the user, for the files in PATHSPEC (see the Path Specification section for more information). (The syntax of root is the same as for the
root
preference, plus the special values newer
and older
.)
+Including the preference preferpartial = PATHSPEC -> root causes Unison always to resolve conflicts in favor of root, rather than asking for guidance from the user, for the files in PATHSPEC (see the Path Specification section for more information). (The syntax of root is the same as for the root
preference, plus the special values newer
and older
.)
This preference should be used only if you are sure you know what you are doing!
- - pretendwin
-
-When set to true, this preference makes Unison use Windows-style fast update detection (using file creation times as “pseudo-inode-numbers”), even when running on a Unix system. This switch should be used with care, as it is less safe than the standard update detection method, but it can be useful for synchronizing VFAT filesystems (which do not support inode numbers) mounted on Unix systems. The fastcheck option should also be set to true.
-
- repeat xxx
-
Setting this preference causes the text-mode interface to synchronize repeatedly, rather than doing it just once and stopping. If the argument is a number, Unison will pause for that many seconds before beginning again.
@@ -1715,6 +1795,9 @@ This preference can be used to explicitly set the name of the ssh executable (e.
- sshversion xxx
-
This preference can be used to control which version of ssh should be used to connect to the server. Legal values are 1 and 2, which will cause unison to try to use
ssh1
orssh2
instead of just ssh
to invoke ssh. The default value is empty, which will make unison use whatever version of ssh is installed as the default `ssh' command.
+ - stream
-
+When this preference is set, Unison will use an experimental streaming protocol for transferring file contents more efficiently. The default value is true.
+
- terse
-
When this preference is set to true, the user interface will not print status messages.
@@ -1731,6 +1814,9 @@ Because this option is processed specially during Unison's start-up sequence, it
If the Unison executable was compiled with only a textual interface, this option has no effect. (The pre-compiled binaries are all compiled with both interfaces available.)
+ - unicode xxx
-
+When set to true, this flag causes Unison to perform case insensitive file comparisons assuming Unicode encoding. This is the default. When the flag is set to false, a Latin 1 encoding is assumed. When Unison runs in case sensitive mode, this flag only makes a difference if one host is running Windows or Mac OS X. Under Windows, the flag selects between using the Unicode or 8bit Windows API for accessing the filesystem. Under Mac OS X, it selects whether comparing the filenames up to decomposition, or byte-for-byte.
+
- version
-
Print the current version number and exit. (This option only makes sense on the command line.)
@@ -2206,15 +2292,19 @@ full Posix regexps are not currently supported).
Regex regexp
-For convenience, two other styles of pattern are also recognized:
+For convenience, three other styles of pattern are also recognized:
Name name
-matches any path in which the last component matches name, while
+matches any path in which the last component matches name,
Path path
-matches exactly the path path.
+matches exactly the path path, and
+
+ BelowPath path
+
+matches the path path and any path below.
The name and path arguments of the latter forms of
patterns are not regular expressions. Instead,
standard “globbing” conventions can be used in name and
@@ -2413,7 +2503,7 @@ can be found at the rsync web site (
If you are using Unison with ssh, you may get some speed
improvement by enabling ssh's compression feature. Do this by
-adding the option “-rshargs -C” to the command line or “rshargs = -C” to your profile.
+adding the option “-sshargs -C” to the command line or “sshargs = -C” to your profile.
@@ -2663,70 +2753,230 @@ you have trouble, you might try this one instead:
hosts, provide your remote user name when providing the remote root
(i.e., //username@host/path...
).
-
+
-Changes in Version 2.32.52
+Changes in Version 2.40.61
-Changes since 2.32.44:
+Changes since 2.40.1:
-
-Improvement to the code for resuming directory transfers:
- (1) make sure file information (permissions, ...) has been properly set
- when using a previously transferred temp file
- (2) make sure previously transferred directories are writable
- (other changes made in the developer version of Unison require a
- protocol change)
-
- Got rid of the 16MiB marshalling limit by marshalling to a bigarray
-
- Ignore one hour differences for deciding whether a file may have
- been updated. This avoids slow update detection after daylight
- saving time changes under Windows. This makes it slightly more
- likely to miss an update, but that should be safe enough.
-
- Improved Unison icon under Windows
-
- Case sensitivity information put in the archive (in a backward
- compatible way) and checked when the archive is loaded
-
- Uses improved emulation of "select" call provided by Ocaml 3.11
- under Windows (the GUI does not freeze as much during synchronization)
-
- Upgraded to GPL version 3 and added copyright notice to
- documentation files.
-
- Unison can sometimes fail to transfer a file, giving the unhelpful
- message "Destination updated during synchronization" even though the
- file has not been changed. This can be caused by programs that
- change either the file's contents *or* the file's extended
- attributes without changing its modification time. I'm not sure
- what is the best fix for this – it is not Unison's fault, but it
- makes Unison's behavior puzzling – but at least Unison can be more
- helpful about suggesting a workaround (running once with 'fastcheck'
- set to false). The failure message has been changed to give this
- advice.
+Added "BelowPath" patterns, that match a path as well as all paths below
+ (convenient to use with nodeletion,update,creationpartial preferences)
+
- Added a "fat" preference that makes Unison use the right options
+ when one of the replica is on a FAT filesystem.
+
- Allow "prefer/force=newer" even when not synchronizing modification
+ times. (The reconciler will not be aware of the modification time
+ of unchanged files, so the synchronization choices of Unison can be
+ different from when "times=true", but the behavior remains sane:
+ changed files with the most recent modification time will be
+ propagated.)
+
- Minor fixes and improvements:
+
-
+Compare filenames up to decomposition in case sensitive mode when
+ one host is running MacOSX and the unicode preference is set to
+ true.
+
- Rsync: somewhat faster compressor
+
- Make Unicode the default on all architectures (it was only the
+ default when a Mac OS X or Windows machine was involved).
+
+
+
+
+Changes since 2.32:
+ -
+
+Major enhancement: Unicode support.
+
-
+Unison should now handle unicode filenames correctly on all platforms.
+
- This functionality is controlled by a new preference unicode.
+
- Unicode mode is now the default when one of the hosts is under
+ Windows or MacOS. This may make upgrades a bit more painful (the
+ archives cannot be reused), but this is a much saner default.
+
+ - Partial transfer of directories. If an error occurs while
+ transferring a directory, the part transferred so far is copied into
+ place (and the archives are updated accordingly).
+ The "maxerrors" preference controls how many transfer error Unison
+ will accept before stopping the transfer of a directory (by default,
+ only one). This makes it possible to transfer most of a directory
+ even if there are some errors. Currently, only the first error is
+ reported by the GUIs.
+
+Also, allow partial transfer of a directory when there was an error deep
+ inside this directory during update detection. At the moment, this
+ is only activated with the text and GTK UIs, which have been
+ modified so that they show that the transfer is going to be partial
+ and so that they can display all errors.
+ - Improvement to the code for resuming directory transfers:
+
-
+if a file was not correctly transferred (or the source has been
+ modified since, with unchanged size), Unison performs a new
+ transfer rather than failing
+
- spurious files are deleted (this can happen if a file is deleted
+ on the source replica before resuming the transfer; not deleting
+ the file would result in it reappearing on the target replica)
+
+ - Experimental streaming protocol for transferring file contents (can
+ be disabled by setting the directive "stream" to false): file
+ contents is transfered asynchronously (without waiting for a response
+ from the destination after each chunk sent) rather than using the
+ synchronous RPC mechanism. As a consequence:
+
-
+ Unison now transfers the contents of a single file at a time
+ (Unison used to transfer several contents simultaneously in order
+ to hide the connection latency.)
+
- the transfer of large files uses the full available bandwidth
+ and is not slowed done due to the connection latency anymore
+
- we get performance improvement for small files as well by
+ scheduling many files simultaneously (as scheduling a file for
+ transfer consume little ressource: it does not mean allocating a
+ large buffer anymore)
+
+ - Changes to the internal implementation of the rsync algorithm:
+
-
+use longer blocks for large files (the size of a block is the
+ square root of the size of the file for large files);
+
- transmit less checksum information per block (we still have less
+ than one chance in a hundred million of transferring a file
+ incorrectly, and Unison will catch any transfer error when
+ fingerprinting the whole file)
+
- avoid transfer overhead (which was 4 bytes per block)
+
+ For a 1G file, the first optimization saves a factor 50 on the
+ amount of data transferred from the target to the source (blocks
+ are 32768 bytes rather than just 700 bytes). The two other
+ optimizations save another factor of 2 (from 24 bytes per block
+ down to 10).
+ - Implemented an on-disk file fingerprint cache to speed-up update
+ detection after a crash: this way, Unison does not have do recompute
+ all the file fingerprints from scratch.
+
-
+ When Unison detects that the archive case-sensitivity mode
+ does not match the current settings, it populates the fingerprint
+ cache using the archive contents. This way, changing the
+ case-sensitivity mode should be reasonably fast.
+
+ - 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'
+
- Limit the number of simultaneous external copy program
+ ("copymax" preference)
+
- New "links" preference. When set to false, Unison will report an
+ error on symlinks during update detection. (This is the default
+ when one host is running Windows but not Cygwin.) This is better
+ than failing during propagation.
+
- Added a preference "halfduplex" to force half-duplex communication
+ with the server. This may be useful on unreliable links (as a more
+ efficient alternative to "maxthreads = 1").
+
- Renamed preference "pretendwin" to "ignoreinodenumbers" (an alias is
+ kept for backwards compatibility).
+
- Ignore one-second differences when synchronizing modification time.
+ (Technically, this is an incompatible archive format change, but it
+ is backward compatible. To trigger a problem, a user would have to
+ synchronize modification times on a filesystem with a two-second
+ granularity and then downgrade to a previous version of Unison,
+ which does not work well in such a case. Thus, it does not
+ seem worthwhile to increment the archive format number, which would
+ impact all users.)
+
- Do not keep many files simultaneously opened anymore when the rsync
+ algorithm is in use.
+
- 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
+
-
+fixed rsync bug which could result in an "index out of bounds"
+ error when transferring resource forks.
+
- Fixed bug which made Unison ignore finder information and resource
+ fork when compiled to 64bit on Mac OSX.
+
- should now be 64 bit clean (the Growl framework is not up to date,
+ though)
+
- Made the bridge between Objective C and Ocaml code GC friendly
+ (it was allocating ML values and putting them in an array which
+ was not registered with the GC)
+
- use darker grey arrows (patch contributed by Eric Y. Kow)
+
+ - GTK user interface
+
-
+assistant for creating profiles
+
- profile editor
+
- pop up a summary window when the replicas are not fully
+ synchronized after transport
+
- display estimated remaining time and transfer rate on the
+ progress bar
+
- allow simultaneous selection of several items
+
- Do not reload the preference file before a new update
+ detection if it is unchanged
+
- disabled scrolling to the first unfinished item during transport.
+ It goes way too fast when lot of small files are synchronized, and it
+ makes it impossible to browse the file list during transport.
+
- take into account the "height" preference again
+
- the internal list of selected reconciler item was not always in
+ sync with what was displayed (GTK bug?); workaround implemented
+
- Do not display "Looking for change" messages during propagation
+ (when checking the targe is unchanged) but only during update detection
+
- Apply patch to fix some crashes in the OSX GUI, thanks to Onne Gorter.
+
- Text UI
-
-During update detection, display status by updating a
- single line rather than generating a new line of output every so
- often. That should be less confusing.
-
- In repeat mode, don't save the archives when there is no
- update. Indeed, in this mode, we should minimize the amount of work
- performed and it is unlikely that the archives have changed much.
+During update detection, display status by updating a single line
+rather than generating a new line of output every so often. Should be less
+confusing.
- - Bugfixes
+
- Windows
-
-Fixed quotation of paths and names when writing to a preference file
-
- Fixed bug resulting in slow performances when transferring a file
- using our rsync implementation from a 64-bit architecture to a
- 32-bit architecture.
-
- Fixed bug in
Lwt_unix.run
which could make it fail with a
-Not_found
exception (see [Not_found
raised in
- tryCopyMovedFile] errors)
- - Properly deals with non-conformant AppleDouble files produced
- by Mac OS X.
-
- Fixed bug that results in Unison missing ressource fork changes
-
- Applied a patch from Karl M to make the GTK2 version build with
- OCaml 3.11 on Windows.
-
- Added some extra debugging code to remote.ml to give more
- informative error messages when people encounter the longstanding
- "assert failed during file transfer" bug.
-
- Applied patch from Antoine Reilles for NetBSD compilation
-
- Resizing the update window vertically no longer moves the status
-label. Fix contributed by Pedro Melo.
+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 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 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).
+
+ - Miscellaneous fixes and improvements
+
-
+Made a server waiting on a socket more resilient to unexpected
+ lost connections from the client.
+
- Small patch to property setting code suggested by Ulrich Gernkow.
+
- Several fixes to the change transfer functions (both the internal ones
+ and external transfers using rsync). In particular, limit the number of
+ simultaneous transfer using an rsync
+ (as the rsync algorithm can use a large amount of memory when
+ processing huge files)
+
- Keep track of which file contents are being transferred, and delay
+ the transfer of a file when another file with the same contents is
+ currently being transferred. This way, the second transfer can be
+ skipped and replaced by a local copy.
+
- Experimental update detection optimization:
+ do not read the contents of unchanged directories
+
- When a file transfer fails, turn off fastcheck for this file on the
+ next sync.
+
- Fixed bug with case insensitive mode on a case sensitive filesystem:
+
-
+if file "a/a" is created on one replica and directory "A" is
+ created on the other, the file failed to be synchronized the first
+ time Unison is run afterwards, as Unison uses the wrong path "a/a"
+ (if Unison is run again, the directories are in the archive, so
+ the right path is used);
+
- if file "a" appears on one replica and file "A" appears on the
+ other with different contents, Unison was unable to synchronize
+ them.
+
+ - Improved error reporting when the destination is updated during
+ synchronization: Unison now tells which file has been updated, and how.
+
- Limit the length of temporary file names
+
- Case sensitivity information put in the archive (in a backward
+ compatible way) and checked when the archive is loaded
+
- Got rid of the 16mb marshalling limit by marshalling to a bigarray.
+
- Resume copy of partially transferred files.
@@ -2734,7 +2984,13 @@ label. Fix contributed by Pedro Melo.
Changes since 2.31:
-
-Minor fixes and improvements:
+Small user interface changes
+
-
+Small change to text UI "scanning..." messages, to print just
+ directories (hopefully making it clearer that individual files are
+ not necessarily being fingerprinted).
+
+ - Minor fixes and improvements:
-
Ignore one hour differences when deciding whether a file may have
been updated. This avoids slow update detection after daylight
@@ -2751,6 +3007,11 @@ Ignore one hour differences when deciding whether a file may have
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 update
+ item rather than a fatal error.
+
- Create parent directories (with correct permissions) during
+ transport for paths which point to non-existent locations in the
+ destination replica.
diff --git a/unison-2.40.61.tar.gz b/unison-2.40.61.tar.gz
new file mode 100644
index 0000000..cb69ad3
--- /dev/null
+++ b/unison-2.40.61.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e6114bf6a99d8bbe151250b7e28a74aa546d213f4f7f7914ca086a48b375277b
+size 2702722
diff --git a/unison-ocaml.patch b/unison-ocaml.patch
deleted file mode 100644
index 0aa1733..0000000
--- a/unison-ocaml.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: unison-2.32.52/update.mli
-===================================================================
---- unison-2.32.52.orig/update.mli
-+++ unison-2.32.52/update.mli
-@@ -1,7 +1,7 @@
- (* Unison file synchronizer: src/update.mli *)
- (* Copyright 1999-2009, Benjamin C. Pierce (see COPYING for details) *)
-
--module NameMap : Map.S with type key = Name.t
-+module NameMap : MyMap.S with type key = Name.t
-
- type archive =
- ArchiveDir of Props.t * archive NameMap.t
diff --git a/unison.changes b/unison.changes
index dd4adda..6ce1c61 100644
--- a/unison.changes
+++ b/unison.changes
@@ -1,3 +1,23 @@
+-------------------------------------------------------------------
+Thu Mar 31 13:16:51 UTC 2011 - saschpe@suse.de
+
+- Spec file cleanup
+ * Removed authors from description
+ * Removed ctags dependency
+
+-------------------------------------------------------------------
+Sat Jan 29 18:25:43 UTC 2011 - poletti.marco@gmail.com
+
+- Update to version 2.40.61:
+ * Add "BelowPath" patterns
+ * Other fixes and improvements
+- Update to version 2.40.1:
+ * Unicode support
+ * Partial transfer of directories
+ * Experimental prococol for asyncronous file tranfers, hiding latency
+ * Improve the performance of the rsync protocol
+ * Many (!) other improvements and fixes
+
-------------------------------------------------------------------
Thu Oct 7 07:58:40 UTC 2010 - aj@suse.de
diff --git a/unison.spec b/unison.spec
index bf529a4..35af711 100644
--- a/unison.spec
+++ b/unison.spec
@@ -1,7 +1,7 @@
#
-# spec file for package unison (Version 2.32.52)
+# spec file for package unison
#
-# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -15,29 +15,26 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
-# norootforbuild
-
-
Name: unison
+Version: 2.40.61
+Release: 0
+Summary: A file synchronization tool
+Group: Productivity/Networking/Other
+License: GPLv3+
+Url: http://www.cis.upenn.edu/~bcpierce/unison
+Source0: http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-%{version}.tar.gz
+Source1: http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-%{version}-manual.html
+Source2: %{name}.desktop
+Source3: %{name}.png
+Patch0: fix_makefile.patch
+BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: gtk2-devel ncurses-devel update-desktop-files
%if 0%{?suse_version} > 1020
BuildRequires: lablgtk2-devel
%else
BuildRequires: lablgtk2
%endif
-License: GPLv3+
-Group: Productivity/Networking/Other
AutoReqProv: on
-Version: 2.32.52
-Release: 6
-Source0: http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-%{version}.tar.gz
-Source1: http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-%{version}-manual.html
-Source2: %name.desktop
-Source3: %name.png
-Patch1: unison-ocaml.patch
-Url: http://www.cis.upenn.edu/~bcpierce/unison
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
-Summary: A file synchronization tool
%description
Unison is a file synchronization tool for Unix and Windows. It allows
@@ -46,15 +43,9 @@ different hosts (or different disks on the same host), modified
separately, then brought up to date by propagating the changes in each
replica to the other.
-
-
-Authors:
---------
- Benjamin Pierce
-
%prep
%setup -q
-%patch1 -p1
+%patch0 -p 1
%build
# This package failed when testing with -Wl,-as-needed being default.
@@ -67,10 +58,10 @@ make UISTYLE=gtk2 NATIVE=true THREADS=true
%endif
%install
-install -m 755 -d $RPM_BUILD_ROOT/%{_bindir}
-install -m 755 %name $RPM_BUILD_ROOT%{_bindir}
-install -m 755 -d $RPM_BUILD_ROOT/%{_prefix}/share/pixmaps
-install -m 644 %{SOURCE3} $RPM_BUILD_ROOT/%{_prefix}/share/pixmaps
+install -m 755 -d %{buildroot}/%{_bindir}
+install -m 755 %name %{buildroot}%{_bindir}
+install -m 755 -d %{buildroot}/%{_prefix}/share/pixmaps
+install -m 644 %{SOURCE3} %{buildroot}/%{_prefix}/share/pixmaps
install -m 644 %{SOURCE1} unison-manual.html
%suse_update_desktop_file -i %name Utility SyncUtility
%ifarch s390 s390x
@@ -79,13 +70,13 @@ export NO_BRP_STRIP_DEBUG=true
%endif
%clean
-rm -rf $RPM_BUILD_ROOT;
+rm -rf %{buildroot}
%files
-%defattr(-, root, root)
+%defattr(-,root,root)
%doc BUGS.txt CONTRIB COPYING NEWS README ROADMAP.txt TODO.txt unison-manual.html
-/usr/share/applications/*
-/usr/share/pixmaps/unison.png
+%{_datadir}/applications/*
+%{_datadir}/pixmaps/unison.png
%{_bindir}/%{name}
%changelog