[Unison-hackers] Re: patches for 2.10.2 and 2.12.0

Andrew Schulman andrex at comcast.net
Mon May 23 09:48:08 EDT 2005


> One thing that is disturbing is that I have to search through the
> mailing list to get the patches that are crucial for the unison
> functionality.  Can somebody put these patches together and make a
> really stable version like 2.9.1 used to be?
> Can you at least put the patches in one place for easy access and a
> comment for which platform are they important?
> 
> If not, then perhaps, Max Bowsher could help me by sending all the
> patches he has applied to his Windows port.  (Thanks Max I use it
> between my office machine and my OpenBSD server.)

I've also been thinking about this problem.  
 
Short term answer:  There should be a way for all of us to coordinate 
our patch sets, so people can synchronize across platforms and expect 
to see the same set of features and bugs.
 
FWIW, here are the patches that I've used to build the current Cygwin 
packages:

http://home.comcast.net/~andrex/cygwin/unison2.10.2/unison2.10.2-patches.zip
http://home.comcast.net/~andrex/cygwin/unison2.12.0/unison2.12.0-patches.zip

I've derived my list of patches just by following the Unison lists.  
Each zip file includes a README that refers to the messages where the 
patches were posted.

Long-term answer:

Versioning and patches in Unison are a problem.  The problem goes back 
to the design decision of the Unison developers, that different 
versions of Unison should be considered incompatible and refuse to talk 
to each other.  As I understand it, this potential incompatibility 
derives from possible differences in either the archive file format, or 
the network protocol, or both.

While I appreciate the problem of potential incompatibilities as Unison 
develops, this system is a mess for packagers and users.  In Cygwin, 
there are now four Unison packages: unison2.9.1, unison2.9.20, 
unison2.10.2, and unison2.12.0.  Each has a separate, correspondingly 
named executable.  I was forced to do this, because Cygwin users 
synchronize with servers running all of these versions, so they need to 
have all of them present on the client side as well.  Every time a new 
beta release is declared, I'll have to create a new Cygwin package for 
it.  And for users, making sure they're using the same version on 
client and server is part of their configuration process.

Unfortunately, declaring a new stable or beta release won't help this 
situation, because users will be forced to continue using their same 
version of Unison until their servers upgrade.  For example, right now 
in Debian there are two Unison packages: unison2.9.1, and unison, the 
latter available in versions 2.9.1 and 2.10.2.  If you're synchronizing 
with a Debian server, you have to either use one of these versions or 
build your own.

So instead what we have is packagers (you, me, Max, ...) applying 
patches as best they can to, say, version 2.10.2.  This results in 
multiple, slightly different versions of 2.10.2, all called "2.10.2" so 
that they'll talk to each other.

In the short term, we should coordinate our patches.  I'm open to 
whatever is the best way to do that.  And, we need the Unison 
developers to help us by making patches available.  For example, the 
recent diff-over-ssh fix was made available as patches to 2.10.2 and 
2.12.0, but the dotfiles-in-iso9660 fix wasn't (at least not yet, as 
far as I've seen).  It was only merged into the development tree.

As a permanent solution to this problem, I wonder if it would be 
possible to introduce archive and network protocol version numbers into 
Unison.  Then, instead of declaring a version mismatch based on the 
Unison version number, Unison could declare a mismatch only if the 
archive or network protocol version numbers were different.  Of course, 
that itself would require a change to the network protocol.  But it 
would be well worth it, IMO.

Andrew.



More information about the Unison-hackers mailing list