exchange: access requirements on repo instead of peer
As part of formalizing the peer interface, I audited for attribute
accesses for non-internal names to find API violations. This
uncovered the code changed in this commit.
localpeer.requirements is just an alias to the repo's requirements
attribute. So, change the code to get the data from the source
instead of relying on a one-off attribute in the localpeer type.
Differential Revision: https://phab.mercurial-scm.org/D265
--- a/mercurial/exchange.py Sun Aug 06 17:44:56 2017 -0700
+++ b/mercurial/exchange.py Sat Aug 05 15:15:20 2017 -0700
@@ -1226,8 +1226,10 @@
opargs = {}
pullop = pulloperation(repo, remote, heads, force, bookmarks=bookmarks,
streamclonerequested=streamclonerequested, **opargs)
- if pullop.remote.local():
- missing = set(pullop.remote.requirements) - pullop.repo.supported
+
+ peerlocal = pullop.remote.local()
+ if peerlocal:
+ missing = set(peerlocal.requirements) - pullop.repo.supported
if missing:
msg = _("required features are not"
" supported in the destination:"