unison 2.53.2-1 is now available in Cygwin. This is a new upstream release, with new features and bug fixes. See the upstream release log[1] for details. Unison is a file synchronizer for Unix and Windows. It allows two replicas of a collection of files and directories to be stored on different hosts (or different disks on the same host), modified separately, and then brought up to date by propagating the changes in each replica to the other. == Unison versions and packages Unison versions 2.52 and later are provided in Cygwin by the unison package. The executable is /usr/bin/unison-latest. All versions 2.52 and later are compatible with each other, so they can sync with each other. They can also sync with Unison versions 2.48-2.51, but apparently not with versions older than that. Test reports are welcome on the Cygwin list, cygwin@cygwin.com. Prior to version 2.52, Unison came in multiple complementary packages for Cygwin: Unison OCaml Package name version version Unison executable ------------ ------- ------- ----------------- unison2.27 2.27.* 4.01.0 /usr/bin/unison-2.27 unison2.32 2.32.* 4.01.0 /usr/bin/unison-2.32 unison2.40 2.40.* 4.02.3 /usr/bin/unison-2.40 unison2.45 2.45.* 4.01.1 /usr/bin/unison-2.45 unison2.48+4.04.2 2.48.* 4.04.2 /usr/bin/unison-2.48+4.04.2 unison2.48+4.08.1 2.48.* 4.08.1 /usr/bin/unison-2.48+4.08.1 unison2.49 2.49.* 4.02.3 /usr/bin/unison-2.49 unison2.51+4.04.2 2.51.* 4.04.2 /usr/bin/unison-2.51+4.04.2 unison2.51+4.10.0 2.51.* 4.10.0 /usr/bin/unison-2.51+4.10.0 Different packages were needed because Unison executables were only compatible if they had the same Unison version, and were compiled with compatible versions of OCaml. (It was kind of a nightmare.) So you had to have a version installed locally that matched the version you were synchronizing with. == Migrating to version 2.52 or later To upgrade Unison on your local host to version 2.52 or later: * If the remote host is also running Unison 2.52 or later, you're all set. * If the remote host is running Unison 2.48-2.51, you can sync with it. If you've previously synchronized files with that host, try syncing with it again with your local version 2.52 or later. If the two Unisons were built with compatible versions of OCaml, then the newer Unison will upgrade the local Unison archive files to the newer format. After that you can sync using any later version of Unison, regardless of the OCaml version. But if Unison throws an error about bad archives or the like, then you'll have to either go back to using the previous Unison version, or (recommended) remove the previous archive files (~/.unison/ar* and ~/.unison/fp*), and start over with a fresh synchronization. * If the remote host is running a version older than 2.48, you can't sync to it with version 2.52 or later. You'll have to keep using one of the older Unison packages listed above, that matches the Unison and OCaml versions of the remote host. The Unison 2.52 Migration Guide[2] has more information. == Setting a default version The package postinstallation script uses alternatives(8) to install a symlink /usr/bin/unison that points to one of the above-named executables. By default this symlink will track the highest-numbered version of Unison that you install on your system. You can change that using alternatives: alternatives --config unison (recommended) or manually. See "man alternatives" for details. If the server provides multiple versions of Unison, you can invoke Unison on the client with for example '-servercmd /usr/bin/unison-2.51' to run the version you want on the server, or put 'servercmd /usr/bin/unison-2.51' into the client's preference file. == User interface All of the Unison packages for Cygwin use the text UI. There is also a GTK3 UI for Unison, but I haven't tried to build it for Cygwin yet. Andrew E. Schulman [1]https://github.com/bcpierce00/unison/releases [2]https://github.com/bcpierce00/unison/wiki/2.52-Migration-Guide