This is an archive of the discontinued Mercurial Phabricator instance.

shelve: stop passing list of files to revert
ClosedPublic

Authored by martinvonz on Mar 29 2019, 2:39 PM.

Details

Summary

It seems to work just fine to not specify any files here. I suspect it
looked the way it did for historical reasons. It apparently used to
use merge instead of rebase until 1d7a36ff2615 (shelve: use rebase
instead of merge (issue4068), 2013-10-23) and it makes sense to want
to restrict the set of files then.

I noticed this because of the files.extend(shelvectx.p1().files()). If
the working copy was clean before, then shelvectx.p1() will be the
working copy parent and that ended up adding all the files in that
set. In our Google-internal Mercurial setup (including a FUSE) that
was very noticeably slow when the working copy parent happened to have
many files in large directories.

This patch doesn't yet remove the call to shelvectx.p1().files(). We
also use that set for deciding what to back up. I'm pretty sure it's
safe to back up only the set of files we already back even if we no
longer restrict the set of files to revert, so this patch should be
safe on its own. Regardless, the next patch will delegate the
backing-up to cmdutil.revert().

Incidentally, this also gets rid of a repo.pathto() that I had earlier
wanted to get rid of.

Diff Detail

Repository
rHG Mercurial
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.