RE: Update-Only Checkout Enhancement
From: Gleason, Todd <Todd.Gleason_at_elekta.com>
Date: Thu, 12 Dec 2013 08:01:13 -0800
> From: Ben Reser [mailto:ben_at_reser.org]
Should you get into doing this, I hope it will be highly configurable both from the server side and client side.
I can definitely see running a checkout operation where you'd like to specify that for anything under a certain URL within your checkout, you don't want pristine (just what I presume would be sufficient metadata like dates+hashes to detect any changes that may occur). Or after fetching, you might want to "prune" out the pristines for a file or directory tree. You may or may not change the files afterward, and as folks have noted, you'd have to fetch down from the server in any commit operation, and you'd have to do a double-fetch of sorts (working base plus intended revision) in order to update in cases where such a file had been locally altered.
Note that this pruning sort of behavior may require maintaining client-side metadata, perhaps similar to how changelists are client-side.
You would also want to be able to configure on the server something like svn:no-pristines to say that by default there would be no pristine in any working copy that downloaded a given file/path, and then you'd need to do some opposite logic from any client that did want the pristines. This could be good when most people don't work in a given area, but you want to accommodate the few people who do by letting them demand the usual structure.
And yes, it's icing on the cake, though I can certainly imagine using it. I have enough working copies that disk space is very much an issue for me.
> Once you no longer need a pristine there are a lot of potential
You do what you have to do based on what's in the WC (which is determined by server and client configurations). If you're committing without a pristine, I think you must either send the whole new file, or else re-receive the working base file from the server. That is, unless you do something like running checksums/hashes on fragments of the file to pinpoint changes, which you might do if the file is really large, or (my preference) if a particular svn: attribute was set on the file/folder.
Of course for doing updates, if you can determine based on the file's metadata (checksum/hash info) that the file hasn't changed, then the usual diff should still function.
> What about compressing the file. If it compresses well then you could
I don't think this gets you very far. Probably worth doing, but I wouldn't see it as the ultimate answer.
> The user may want us to retain the pristine data we retrieved to
Exactly, and that's where the client-side configuration I described above would come into play.
> For that matter the pristine store as of 1.7 doesn't even remove files.
Yes, very much so.
> So all in all it's not a matter of throwing a simple option in and
As always you have to prioritize. Note though that http://subversion.tigris.org/issues/show_bug.cgi?id=525 is 12 years old. With WC-NG available now, perhaps it's time to consider this.
Todd C. Gleason | Senior Software Engineer
Please consider the environment before printing this e-mail.
The contents of this e-mail message (including any attachments) are confidential to and are intended to be conveyed for the use of the recipient to whom it is addressed only. If you receive this transmission in error, please notify the sender of this immediately and delete the message from your system. Any distribution, reproduction or use of this message by someone other than recipient is not authorized and may be unlawful.
|
This is an archived mail posted to the Subversion Users mailing list.
This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.