Page MenuHomePhabricator

shelve: stop passing list of files to revert

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



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

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