notify: don't produce errors if a revision is not found
authorAnton Shestakov <av6@dwimlabs.net>
Sun, 06 Feb 2022 19:14:51 +0300
changeset 48717 ae27a0684e75
parent 48716 f1eb77dceb36
child 48718 8b393f40a5e6
notify: don't produce errors if a revision is not found Notify extension has a way to only subscribe to a specific revset, such as "branch(foo)". Before this patch, when there was no branch with that name, it would produce a traceback saying "unknown revision: foo". With this patch it would no longer do that, and instead it'll assume there are no revisions that match this revset. I think this patch is an improvement in general, but there's a reason I'm sending it now. test-notify.t has a test case where it obsoletes the only revision on a branch, and previously that wouldn't produce any complications, because head computation wasn't obsolescence-aware. Now if the only revision on a branch is obsolete, repo should not see that branch at all. That branch will still be present in branchcache (with an empty list of revisions) until the next patch. Differential Revision: https://phab.mercurial-scm.org/D12134
hgext/notify.py
--- a/hgext/notify.py	Thu Feb 03 18:14:11 2022 +0100
+++ b/hgext/notify.py	Sun Feb 06 19:14:51 2022 +0300
@@ -435,7 +435,10 @@
             if spec is None:
                 subs.add(sub)
                 continue
-            revs = self.repo.revs(b'%r and %d:', spec, ctx.rev())
+            try:
+                revs = self.repo.revs(b'%r and %d:', spec, ctx.rev())
+            except error.RepoLookupError:
+                continue
             if len(revs):
                 subs.add(sub)
                 continue