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
BasedOnStyle: LLVM
IndentWidth: 8
UseTab: ForIndentation
BreakBeforeBraces: Linux
AllowShortIfStatementsOnASingleLine: false
IndentCaseLabels: false
AllowShortBlocksOnASingleLine: false
AllowShortFunctionsOnASingleLine: false
IncludeCategories:
- Regex: '^<'
Priority: 1
- Regex: '^"'
Priority: 2