210 provides keyword substitution functions. |
211 provides keyword substitution functions. |
211 ''' |
212 ''' |
212 |
213 |
213 def __init__(self, ui, repo, inc, exc): |
214 def __init__(self, ui, repo, inc, exc): |
214 self.ui = ui |
215 self.ui = ui |
215 self.repo = repo |
216 self._repo = weakref.ref(repo) |
216 self.match = match.match(repo.root, '', [], inc, exc) |
217 self.match = match.match(repo.root, '', [], inc, exc) |
217 self.restrict = kwtools['hgcmd'] in restricted.split() |
218 self.restrict = kwtools['hgcmd'] in restricted.split() |
218 self.postcommit = False |
219 self.postcommit = False |
219 |
220 |
220 kwmaps = self.ui.configitems('keywordmaps') |
221 kwmaps = self.ui.configitems('keywordmaps') |
221 if kwmaps: # override default templates |
222 if kwmaps: # override default templates |
222 self.templates = dict(kwmaps) |
223 self.templates = dict(kwmaps) |
223 else: |
224 else: |
224 self.templates = _defaultkwmaps(self.ui) |
225 self.templates = _defaultkwmaps(self.ui) |
|
226 |
|
227 @property |
|
228 def repo(self): |
|
229 return self._repo() |
225 |
230 |
226 @util.propertycache |
231 @util.propertycache |
227 def escape(self): |
232 def escape(self): |
228 '''Returns bar-separated and escaped keywords.''' |
233 '''Returns bar-separated and escaped keywords.''' |
229 return '|'.join(map(re.escape, self.templates.keys())) |
234 return '|'.join(map(re.escape, self.templates.keys())) |
656 kwt.overwrite(ctx, added, True, False) |
661 kwt.overwrite(ctx, added, True, False) |
657 return ret |
662 return ret |
658 finally: |
663 finally: |
659 kwt.restrict = origrestrict |
664 kwt.restrict = origrestrict |
660 |
665 |
|
666 repo.__class__ = kwrepo |
|
667 repo._keywordkwt = kwt |
|
668 |
661 # monkeypatches |
669 # monkeypatches |
662 def kwpatchfile_init(orig, self, ui, gp, backend, store, eolmode=None): |
670 def kwpatchfile_init(orig, self, ui, gp, backend, store, eolmode=None): |
663 '''Monkeypatch/wrap patch.patchfile.__init__ to avoid |
671 '''Monkeypatch/wrap patch.patchfile.__init__ to avoid |
664 rejects or conflicts due to expanded keywords in working dir.''' |
672 rejects or conflicts due to expanded keywords in working dir.''' |
665 orig(self, ui, gp, backend, store, eolmode) |
673 orig(self, ui, gp, backend, store, eolmode) |
766 extensions.wrapfunction(cmdutil, 'amend', kw_amend) |
774 extensions.wrapfunction(cmdutil, 'amend', kw_amend) |
767 extensions.wrapfunction(cmdutil, 'copy', kw_copy) |
775 extensions.wrapfunction(cmdutil, 'copy', kw_copy) |
768 extensions.wrapfunction(cmdutil, 'dorecord', kw_dorecord) |
776 extensions.wrapfunction(cmdutil, 'dorecord', kw_dorecord) |
769 for c in nokwwebcommands.split(): |
777 for c in nokwwebcommands.split(): |
770 extensions.wrapfunction(webcommands, c, kwweb_skip) |
778 extensions.wrapfunction(webcommands, c, kwweb_skip) |
771 repo.__class__ = kwrepo |
|