diff -r 85640f1feced -r 034d6d0efa7d hgext3rd/topic/__init__.py --- a/hgext3rd/topic/__init__.py Wed Mar 11 16:11:04 2020 +0700 +++ b/hgext3rd/topic/__init__.py Thu Mar 19 20:09:18 2020 +0530 @@ -483,18 +483,27 @@ if self.ui.configbool(b'experimental', b'enforce-single-head'): if util.safehasattr(tr, 'validator'): # hg <= 4.7 (ebbba3ba3f66) origvalidator = tr.validator + elif util.safehasattr(tr, '_validator'): + # hg <= 5.3 (36f08ae87ef6) + origvalidator = tr._validator else: - origvalidator = tr._validator + origvalidator = None + + def _validate(tr2): + repo = reporef() + flow.enforcesinglehead(repo, tr2) def validator(tr2): - repo = reporef() - flow.enforcesinglehead(repo, tr2) + _validate(tr2) origvalidator(tr2) if util.safehasattr(tr, 'validator'): # hg <= 4.7 (ebbba3ba3f66) tr.validator = validator + elif util.safehasattr(tr, '_validator'): + # hg <= 5.3 (36f08ae87ef6) + tr._validator = validator else: - tr._validator = validator + tr.addvalidator(b'000-enforce-single-head', _validate) topicmodeserver = self.ui.config(b'experimental', b'topic-mode.server', b'ignore') @@ -502,17 +511,27 @@ if (topicmodeserver != b'ignore' and ispush): if util.safehasattr(tr, 'validator'): # hg <= 4.7 (ebbba3ba3f66) origvalidator = tr.validator - else: + elif util.safehasattr(tr, '_validator'): + # hg <= 5.3 (36f08ae87ef6) origvalidator = tr._validator + else: + origvalidator = None - def validator(tr2): + def _validate(tr2): repo = reporef() flow.rejectuntopicedchangeset(repo, tr2) + + def validator(tr2): + _validate(tr2) return origvalidator(tr2) + if util.safehasattr(tr, 'validator'): # hg <= 4.7 (ebbba3ba3f66) tr.validator = validator + elif util.safehasattr(tr, '_validator'): + # hg <= 5.3 (36f08ae87ef6) + tr._validator = validator else: - tr._validator = validator + tr.addvalidator(b'000-reject-untopiced', _validate) elif (self.ui.configbool(b'experimental', b'topic.publish-bare-branch') and (desc.startswith(b'push') @@ -533,17 +552,27 @@ if not allow_publish: if util.safehasattr(tr, 'validator'): # hg <= 4.7 (ebbba3ba3f66) origvalidator = tr.validator - else: + elif util.safehasattr(tr, '_validator'): + # hg <= 5.3 (36f08ae87ef6) origvalidator = tr._validator + else: + origvalidator = None - def validator(tr2): + def _validate(tr2): repo = reporef() flow.reject_publish(repo, tr2) + + def validator(tr2): + _validate(tr2) return origvalidator(tr2) + if util.safehasattr(tr, 'validator'): # hg <= 4.7 (ebbba3ba3f66) tr.validator = validator + elif util.safehasattr(tr, '_validator'): + # hg <= 5.3 (36f08ae87ef6) + tr._validator = validator else: - tr._validator = validator + tr.addvalidator(b'000-reject-publish', _validate) # real transaction start ct = self.currenttopic