comparison mercurial/merge.py @ 27130:6f045b563fa5

mergestate: add a cached property accessor for the local context This is going to be useful in an upcoming patch. We make this a public accessor because this is also going to be useful for custom merge drivers.
author Siddharth Agarwal <sid0@fb.com>
date Mon, 30 Nov 2015 10:03:21 -0800
parents 1bf1a7c3df43
children d837da26155e
comparison
equal deleted inserted replaced
27129:1bf1a7c3df43 27130:6f045b563fa5
101 101
102 def reset(self, node=None, other=None): 102 def reset(self, node=None, other=None):
103 self._state = {} 103 self._state = {}
104 self._local = None 104 self._local = None
105 self._other = None 105 self._other = None
106 if 'otherctx' in vars(self): 106 for var in ('localctx', 'otherctx'):
107 del self.otherctx 107 if var in vars(self):
108 delattr(self, var)
108 if node: 109 if node:
109 self._local = node 110 self._local = node
110 self._other = other 111 self._other = other
111 self._readmergedriver = None 112 self._readmergedriver = None
112 if self.mergedriver: 113 if self.mergedriver:
124 of on disk file. 125 of on disk file.
125 """ 126 """
126 self._state = {} 127 self._state = {}
127 self._local = None 128 self._local = None
128 self._other = None 129 self._other = None
129 if 'otherctx' in vars(self): 130 for var in ('localctx', 'otherctx'):
130 del self.otherctx 131 if var in vars(self):
132 delattr(self, var)
131 self._readmergedriver = None 133 self._readmergedriver = None
132 self._mdstate = 's' 134 self._mdstate = 's'
133 unsupported = set() 135 unsupported = set()
134 records = self._readrecords() 136 records = self._readrecords()
135 for rtype, record in records: 137 for rtype, record in records:
283 raise error.ConfigError( 285 raise error.ConfigError(
284 _("merge driver changed since merge started"), 286 _("merge driver changed since merge started"),
285 hint=_("revert merge driver change or abort merge")) 287 hint=_("revert merge driver change or abort merge"))
286 288
287 return configmergedriver 289 return configmergedriver
290
291 @util.propertycache
292 def localctx(self):
293 if self._local is None:
294 raise RuntimeError("localctx accessed but self._local isn't set")
295 return self._repo[self._local]
288 296
289 @util.propertycache 297 @util.propertycache
290 def otherctx(self): 298 def otherctx(self):
291 if self._other is None: 299 if self._other is None:
292 raise RuntimeError("localctx accessed but self._local isn't set") 300 raise RuntimeError("localctx accessed but self._local isn't set")