RE: Re: Another request for obliterate...
From: Johnson, Rick <JohnsonR_at_gc.adventist.org>
Date: 2005-04-14 22:26:52 CEST
As part of my duties I am a network admin. I hear "Disk space is so cheap, just add more" a LOT. It's not a true statement or at least vastly misleading. Sure, the physical disk is cheap (although not as much with SCSI, which is still the most popular server disk type). You still have to "pay" the admin to add it to the server/raid array which can take hours or more in some setups. You have to figure out a backup system for that extra disk which can be non-trivial. In fact, an increasing number of admins that I talk to are capping their network disk space because of backup constraints rather than anything else. If you can't afford SAN mirroring or something like that then you're stuck with tape for backkup and tape is EXPENSIVE, both in administration and in media cost.
From: Tim Hill [mailto:email@example.com]
On Tue, 2005-04-12 at 16:18 -0300, Nicolás Lichtmaier wrote:
A few unsolicited comments...
* First of all, I agree with Ben Collins-Sussman. This should be done through svnadmin and not through the svn client. Users have no reason to be able to access a command that does irreversible damage to the archive.
* As mentioned by Karl Fogal, there are at least two separate commands being talked about. Command #1 removes a particular version of the file/archive (let's call it "rmver"). Command #2 removes all entries to a particular file from all versions of the archive (let's call it "obliterate").
* In my 20 years of CM experience, the "obliterate" command isn't as important as the "rmver" command. Very rarely is there a need to completely remove all references to a particular file. The only time that ever happens is when a user accidently creates a file they didn't need.
* Unlike other version control systems. Subversion versions not the file, but the archive. When I decide to remove the version of file "foo.txt" that exists in version 33 of the archive? What should I remove? Am I removing the entire version 33 of the archive. That is, you have version 32 and version 34, but not version 33? Or, am I removing the version of "foo.txt" that existed in version 33 of the archive?
Let's say that "rmver" removes the entire version of an archive (which might be simpler to implement). If foo.txt was changed in versions 23, 33, and 45 of the archive, and I remove version 33 of the archive, what does version 34 of the archive look like? Do I see version 32 of the archive, plus any changes done in version 34 of the archive? Does that mean that foo.txt is the same file from version 23 to version 44 of the archive? What if I also changed bar.txt in version 33 of the archive, and I wanted to keep that?
Let's say that "rmver" removes only the version of the file that existed in that version of the archive. Let's also say the foo.txt changed in version 23, 33, and 45 of the archive. So, we can remove the version of foo.txt that existed in version 33 of the archive, but not necessarily bar.txt that existed in version 33 of the archive. What do we see when we look at version 33 of the archive? Do we see foo.txt at all? If not, what happens if you looked at version 34 of the archive? Or version 43 of the archive? If you simply "hide" foo.txt from view, you'll be missing this file in 10 different versions of the archive. If I am doing rmver for various files, I might get to the point where my archives become garbage because each version of the archive is missing files.
* I label releases in Subversion by copying a pointer of a particular version of the archive to the tags directory -- which in turn creates another version of the archive. What if I copied version 36 of the archive to this directory as a release, and I removed the version of file foo.txt that existed in version 33 of the directory? If foo.txt wasn't changed between version 33 and version 44 of the directory, what does my labeled release look like? Do I still show version 33 of the file in the tags directory? Or, do I show the older version of foo.txt that existed back in version 23 of the file?
This is a tricky answer because I might want diffent behaviors whether I did a copy of that version to the tags subdirectory (and thus is a labeled version of the file) or to the branches subdirectory (and thus is merely old development work and something I might not care about six months down the line).
This is an archived mail posted to the Subversion Users mailing list.