On Fri, Mar 11, 2022 at 2:36 PM Julian Foad <julianf...@apache.org> wrote:
> The "restore missing files" is an odd thing that "update" does outside
> of its core purpose: when any versioned file in its scope is missing
> from disk, it puts an unmodified copy of the file back on disk there, by
> copying (and translating keywords/eol-style) from its pristine version.
> It's something like an implicit revert for files that were deleted from
> disk without using "svn delete". Why so, I don't know, and I don't like
> it, but it's there, so let's go on to look at how it interacts with
> absent pristines.
(snip)
> It's probably a rare case in most users' work flows but it's something
> that exists we have to deal with one way or another, even if by
> declaring it no longer supported and changing test expectations accordingly.

I am glad that you explained the "restore thing." That is actually a
workflow that I use, probably more often than I should! I don't
remember whether it's an old habit dating back to CVS, whether it was
ever documented in the svn-book, or whether I simply observed that
deleting a file and calling 'svn update' restores it, but this feature
is kind of ingrained in my mind as part of how SVN works. I do use
'svn revert' when appropriate, but sometimes 'svn update' seems more
appropriate. Yes, this may be more of a habit than a real use case,
but bear with me for a moment...

If possible and not overly burdensome, I think it would be a good
thing to keep the "restore" functionality for the following reasons:

1. This is how SVN has worked since ages and ages ago and may be
ingrained in the minds of other users besides me; if so, then getting
rid of it may be considered a backwards compatibility breaking change
in terms of usage.

2. Conceptually the restore functionality makes sense, since it brings
a working copy up to date with the repository; any files in the
repository which are not in the working copy should therefore be
populated.

3. "svn checkout" is the same thing as bootstrapping a working copy
without the contents and then running "svn update" to "restore" the
missing files, which are missing because they were never downloaded in
the first place. The code in svn_client__checkout_internal() explains
this in comments.

4. An interrupted "checkout" or "update" (interrupted, e.g., with
Ctrl+C) can be resumed with "svn update" (after running "svn cleanup"
to release locks).

Removing the "restore" functionality will probably break the above;
unfortunately I don't know what else may be affected.

Just my 2 cents. If it absolutely has to go, I'll get used to using
'revert' instead, but I just wanted to point out that this may cause
other issues...

Cheers,
Nathan

Reply via email to