Vincent Lefevre wrote:

> On 2013-03-01 14:58:10 +0000, Philip Martin wrote:
>>  A server-side solution is difficult.  Suppose the client has some
>>  uncompressed content U which it compresses to C and sends to the server.
>>  The server can uncompress C to get U but unless the compression scheme
>>  has a canonical compressed form, with no other forms allowed, the server
>>  cannot avoid storing C because there is no guarantee that C can be
>>  reconstructed from U.
> 
> This is not specific to server side. Even on the client side, the
> reconstruction may not be always possible, e.g. if the system is
> upgraded or if NFS is used. And the compression level may need to
> be detected or provided in some way.

Hi Vincent.  I'm not sure you understood Philip's point.  His point is (correct 
me if I'm wrong) that Subversion's design requires that during a checkout or 
update, the server must reconstruct a file containing exactly the same bit 
pattern that the client sent when committing the file.  Compression schemes in 
general don't guarantee that expanding and then compressing will produce the 
same compressed bit pattern, even if you take care to use the same "compression 
level".  Therefore, the server cannot simply expand the data before storing it 
and then re-compress it during checkout or update, because, although the 
resulting compressed file would be a valid representation of the user's data, 
it would not satisfy Subversion's own requirement that the bit pattern be 
identical to what was sent by the client during the commit.

That point _is_ specific to a server-side solution.  With a client-side 
solution, the user's word processor may not mind if a versioning operation such 
as a commit (through a decompressing plug-in) followed by checkout (through a 
re-compressing plug-in) changes the bit pattern of the compressed file, so long 
as the uncompressed content that it represents is unchanged.

Of course other things can always go wrong, such as not having the right 
software installed (is that what you mean by "the system is upgraded"?), but 
that's true of all computing tasks, not specific to this one.  I don't know 
what you mean about using NFS.

- Julian

Reply via email to