[PATCH STABLE] bookmarks: use try/except for accessing a node

Gregory Szorc gregory.szorc at gmail.com
Wed Mar 19 00:33:36 UTC 2014


On 3/18/2014 5:23 PM, Sean Farley wrote:
> # HG changeset patch
> # User Sean Farley <sean.michael.farley at gmail.com>
> # Date 1395182192 18000
> #      Tue Mar 18 17:36:32 2014 -0500
> # Branch stable
> # Node ID 8d3d12401c38524417f1151b817fd210645a0602
> # Parent  03774a2b6991b451bde7095238fde9ce98380d28
> bookmarks: use try/except for accessing a node
> 
> Previously, in bookmarks.compare a changeset node would be tested via 'node in
> repo' but this is tricky. A value of 'True' could be returned even if the node
> is hidden and accessing it will throw a 'RepoLookupError'. This happens when a
> remote bookmark points to changeset that has been obsoleted locally. Therefore,
> we wrap the block in a try/except which handles catching the error.
> 
> Writing a test is also tricky because I only observed this in extension land,
> so I put a comment to explain why we use try/except.

I /think/ I was poking at the same problem a week or two ago. I was able
to get my local repo to hit a RepoLookupError but was unable to write a
test case to reproduce.

I worked around the problem by throwing a repo = repo.unfiltered() in
bookmarks.compare(). I didn't submit a patch yet because I was hoping to
try a little harder getting a test to repro.




More information about the Mercurial-devel mailing list