Mercurial > hg-stable
changeset 46270:161313f9c467
shelve: rewrite check for unknown shelf to delete
The code would try to delete the shelf's .patch file and if that
raised an exception, it would convert it to an `error.Abort`. This
patch rewrites it so the check is done upfront. I find it easier to
read that way. It's now clear enough that I removed the comment
explaining it as well.
As Joerg pointed out during review, another differences is that the
old code would move a `.hg` file without its `.patch` friend to backup
before it realized that the `.patch` file was missing. The new code
will error out earlier and not move the `.hg` file, which seems like
an improvement. That should only matter on corrupt `.hg/shelved/`
directories, however.
Differential Revision: https://phab.mercurial-scm.org/D9697
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Thu, 07 Jan 2021 12:22:39 -0800 |
parents | 44556639f14a |
children | b2a8ff736ecf |
files | mercurial/shelve.py tests/test-shelve2.t |
diffstat | 2 files changed, 7 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/shelve.py Thu Jan 07 12:37:14 2021 -0800 +++ b/mercurial/shelve.py Thu Jan 07 12:22:39 2021 -0800 @@ -600,20 +600,12 @@ raise error.Abort(_(b'no shelved changes specified!')) with repo.wlock(): for name in pats: - try: - for suffix in shelvefileextensions: - shfile = shelvedfile(repo, name, suffix) - # patch file is necessary, as it should - # be present for any kind of shelve, - # but the .hg file is optional as in future we - # will add obsolete shelve with does not create a - # bundle - if shfile.exists() or suffix == patchextension: - shfile.movetobackup() - except OSError as err: - if err.errno != errno.ENOENT: - raise + if not shelvedfile(repo, name, patchextension).exists(): raise error.Abort(_(b"shelved change '%s' not found") % name) + for suffix in shelvefileextensions: + shfile = shelvedfile(repo, name, suffix) + if shfile.exists(): + shfile.movetobackup() cleanupoldbackups(repo)
--- a/tests/test-shelve2.t Thu Jan 07 12:37:14 2021 -0800 +++ b/tests/test-shelve2.t Thu Jan 07 12:22:39 2021 -0800 @@ -776,8 +776,8 @@ $ find .hg/shelve* | sort .hg/shelve-backup .hg/shelve-backup/junk1.patch - .hg/shelve-backup/junk2.hg .hg/shelved + .hg/shelved/junk2.hg # A file with an unexpected extension $ touch .hg/shelved/junk3 @@ -791,8 +791,8 @@ $ find .hg/shelve* | sort .hg/shelve-backup .hg/shelve-backup/junk1.patch - .hg/shelve-backup/junk2.hg .hg/shelved + .hg/shelved/junk2.hg .hg/shelved/junk3 $ cd ..