577 if self._hasnodespec(newmapping): |
577 if self._hasnodespec(newmapping): |
578 mapping['revcache'] = {} # per-ctx cache |
578 mapping['revcache'] = {} # per-ctx cache |
579 if self._hasnodespec(origmapping) and self._hasnodespec(newmapping): |
579 if self._hasnodespec(origmapping) and self._hasnodespec(newmapping): |
580 orignode = templateutil.runsymbol(context, origmapping, 'node') |
580 orignode = templateutil.runsymbol(context, origmapping, 'node') |
581 mapping['originalnode'] = orignode |
581 mapping['originalnode'] = orignode |
582 # put marker to override 'fctx' in mapping if any, and flag |
582 # put marker to override 'ctx'/'fctx' in mapping if any, and flag |
583 # its existence to be reported by availablekeys() |
583 # its existence to be reported by availablekeys() |
|
584 if 'ctx' not in newmapping and self._hasliteral(newmapping, 'node'): |
|
585 mapping['ctx'] = _placeholder |
584 if 'fctx' not in newmapping and self._hasliteral(newmapping, 'path'): |
586 if 'fctx' not in newmapping and self._hasliteral(newmapping, 'path'): |
585 mapping['fctx'] = _placeholder |
587 mapping['fctx'] = _placeholder |
586 return mapping |
588 return mapping |
587 |
589 |
588 def _getsome(self, mapping, key): |
590 def _getsome(self, mapping, key): |
603 return v |
605 return v |
604 |
606 |
605 def _hasnodespec(self, mapping): |
607 def _hasnodespec(self, mapping): |
606 """Test if context revision is set or unset in the given mapping""" |
608 """Test if context revision is set or unset in the given mapping""" |
607 return 'node' in mapping or 'ctx' in mapping |
609 return 'node' in mapping or 'ctx' in mapping |
|
610 |
|
611 def _loadctx(self, mapping): |
|
612 repo = self._getsome(mapping, 'repo') |
|
613 node = self._getliteral(mapping, 'node') |
|
614 if repo is None or node is None: |
|
615 return |
|
616 try: |
|
617 return repo[node] |
|
618 except error.RepoLookupError: |
|
619 return None # maybe hidden/non-existent node |
608 |
620 |
609 def _loadfctx(self, mapping): |
621 def _loadfctx(self, mapping): |
610 ctx = self._getsome(mapping, 'ctx') |
622 ctx = self._getsome(mapping, 'ctx') |
611 path = self._getliteral(mapping, 'path') |
623 path = self._getliteral(mapping, 'path') |
612 if ctx is None or path is None: |
624 if ctx is None or path is None: |
615 return ctx[path] |
627 return ctx[path] |
616 except error.LookupError: |
628 except error.LookupError: |
617 return None # maybe removed file? |
629 return None # maybe removed file? |
618 |
630 |
619 _loadermap = { |
631 _loadermap = { |
|
632 'ctx': _loadctx, |
620 'fctx': _loadfctx, |
633 'fctx': _loadfctx, |
621 } |
634 } |
622 |
635 |
623 def formatter(ui, out, topic, opts): |
636 def formatter(ui, out, topic, opts): |
624 template = opts.get("template", "") |
637 template = opts.get("template", "") |