[PATCH STABLE] convert: handle LookupError in mercurial_source.lookuprev()

Yuya Nishihara yuya at tcha.org
Mon Jan 19 05:14:23 CST 2015


On Sun, 18 Jan 2015 22:38:50 -0500, Matt Harbison wrote:
> # HG changeset patch
> # User Matt Harbison <matt_harbison at yahoo.com>
> # Date 1421637713 18000
> #      Sun Jan 18 22:21:53 2015 -0500
> # Branch stable
> # Node ID fc03807767639e86d7b3b82b9857f8922e2c6d8f
> # Parent  74f3ae15cb0e5554633d82ed95262688a7cc774f
> convert: handle LookupError in mercurial_source.lookuprev()
> 
> This is in line with the documentation on the base class method, and is related
> to issue4496 (but doesn't fix the reporter's problem of not mangling other data
> that matches a revision pattern).  Now instead of aborting when there is an
> ambiguous source rev, it simply won't update the commit comment.  A warning
> message might be nice, but a None return masks whether the problem was no
> matching revision, or more than one.
> 
> The only other caller of this is the logic that converts tags, but those are
> never ambiguous since they are always 40 characters.
> 
> A test isn't feasible because there simply aren't enough commits in the test
> suite repos to have an ambiguous identifier that is at least 6 characters long,
> and it would be too easy for the ambiguity to disappear when unrelated changes
> are made.  Instead, I simply ran 'hg --traceback log -r c' on the hg repo, and
> handled the error it threw.
> 
> diff --git a/hgext/convert/hg.py b/hgext/convert/hg.py
> --- a/hgext/convert/hg.py
> +++ b/hgext/convert/hg.py
> @@ -467,7 +467,7 @@
>      def lookuprev(self, rev):
>          try:
>              return hex(self.repo.lookup(rev))
> -        except error.RepoError:
> +        except error.RepoError, error.LookupError:

It should be (error.RepoError, error.LookupError).


More information about the Mercurial-devel mailing list