Well, so, for the record, I don't like Mike's suggestions.
I would like "update --depth D" to cause all affected objects to
reach depth D. If they were formerly shallower, they should deepen;
if they were formerly deeper, their nether regions should be
removed. If there are mods in the nether regions, exception behavior
should kick in (perhaps unmanaging stuff but leaving the modded
files, perhaps simply rejecting the operation).
In making the proposal, Mike appears to be appealing to a kind of
symmetry argument, preserving the pattern that most commands treat "--
depth D" as meaning "don't change any depth settings, but be willing
to reach as far down as D to do your thing, if the current WC is that
deep in a given area." Only checkout, he suggests, should work
otherwise, being able to change the depth. That is, his argument is
either "a single exception is less confusing than several," and/or
"checkout is already special anyway, so making it handle depth
differently at least aligns with more elemental asymmetries."
I challenge all those lines of thinking, and I introduce a third as
well.
First off, while I can easily understand the effect of "xxx --depth
D" in a deeper-than-D context for any command besides checkout (that
is, Mike's "usual" cases), I can't for the life of me think of a use
case. I'm not, therefore, very powerfully motivated to preserve this
symmetric yet apparently useless property.
Second, while I agree that checkout is "special" in some inchoate
sense that might well justify its exception from the pattern, I think
update is just as "special," to the same degree and in the same way.
And so is 'switch,' by the way. It's not only the inner secrets of
the protocol that know that checkout and update and switch are
practically the same thing; even the users know that. To the extent
that this specialness justifies anything, it applies to update (and
to switch) just as much to checkout: they all mean "download."
For my third and new line of thought, I will actually illustrate from
the original post:
On Sep 24, 2007, at 6:48 PM, C. Michael Pilato wrote:
> In other words, the way to make a shallow part of your working copy
> less
> shallow, you 'svn update' it to a depth value that's ... less
> shallow. In
> order to do the reverse -- aha, well, there's no nice way to do so,
> just
> some hackish workarounds (he didn't describe those).
Despite the fact that I can't see much sense in a depth-limited
'status' on a deep working copy, I think the use case "make this
working copy shallower" is very real. It also can be spelled "oh,
no, not that crap!" Or even "done with that, now refocus on
something else." So this ill-supported operation does interest me.
Now it's true enough that, if you run ever farther down Mike's
proposed road of making only checkout able to diddle depth, then you
lose any chance to "shallow things up." But if, instead, you finish
the path already started, things are not so bleak. The most natural
command for "make this shallower" would be
update --depth SomethingLessThanItIsNow
It wouldn't be "checkout," because I already have the files I'm
trying to get rid of.
-==-
Jack Repenning
Chief Technology Officer
CollabNet, Inc.
8000 Marina Boulevard, Suite 600
Brisbane, California 94005
office: +1 650.228.2562
mobile: +1 408.835.8090
raindance: +1 877.326.2337, x844.7461
aim: jackrepenning
skype: jrepenning
Received on Fri Sep 28 22:59:59 2007