Mercurial > hg
changeset 11678:f5aa20e177c0 stable
keyword: move collecting of [keyword] patterns to reposetup (issue2303)
When cloning, prevent [keyword] filename patterns configured locally
in the source directory to persist during the update in the destination.
a) move [keyword] retrieval (back) to reposetup
b) remove the corresponding global kwtools attributes
Add test cases.
author | Christian Ebert <blacktrash@gmx.net> |
---|---|
date | Sun, 25 Jul 2010 20:01:33 -0500 |
parents | 8f8a7976f4bc |
children | c5e555e064d0 b6360a113478 52e4ac3e63f7 |
files | hgext/keyword.py tests/test-keyword tests/test-keyword.out |
diffstat | 3 files changed, 42 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/keyword.py Wed Jul 21 22:22:28 2010 +0200 +++ b/hgext/keyword.py Sun Jul 25 20:01:33 2010 -0500 @@ -108,7 +108,7 @@ svnutcdate = lambda x: util.datestr((x[0], 0), '%Y-%m-%d %H:%M:%SZ') # make keyword tools accessible -kwtools = {'templater': None, 'hgcmd': '', 'inc': [], 'exc': ['.hg*']} +kwtools = {'templater': None, 'hgcmd': ''} def _defaultkwmaps(ui): @@ -141,11 +141,10 @@ provides keyword substitution functions. ''' - def __init__(self, ui, repo): + def __init__(self, ui, repo, inc, exc): self.ui = ui self.repo = repo - self.match = match.match(repo.root, '', [], - kwtools['inc'], kwtools['exc']) + self.match = match.match(repo.root, '', [], inc, exc) self.restrict = kwtools['hgcmd'] in restricted.split() self.record = kwtools['hgcmd'] in recordcommands.split() @@ -438,23 +437,15 @@ def uisetup(ui): - '''Collects [keyword] config in kwtools. - Monkeypatches dispatch._parse if needed.''' - - for pat, opt in ui.configitems('keyword'): - if opt != 'ignore': - kwtools['inc'].append(pat) - else: - kwtools['exc'].append(pat) + ''' Monkeypatches dispatch._parse to retrieve user command.''' - if kwtools['inc']: - def kwdispatch_parse(orig, ui, args): - '''Monkeypatch dispatch._parse to obtain running hg command.''' - cmd, func, args, options, cmdoptions = orig(ui, args) - kwtools['hgcmd'] = cmd - return cmd, func, args, options, cmdoptions + def kwdispatch_parse(orig, ui, args): + '''Monkeypatch dispatch._parse to obtain running hg command.''' + cmd, func, args, options, cmdoptions = orig(ui, args) + kwtools['hgcmd'] = cmd + return cmd, func, args, options, cmdoptions - extensions.wrapfunction(dispatch, '_parse', kwdispatch_parse) + extensions.wrapfunction(dispatch, '_parse', kwdispatch_parse) def reposetup(ui, repo): '''Sets up repo as kwrepo for keyword substitution. @@ -465,15 +456,23 @@ Monkeypatches patch and webcommands.''' try: - if (not repo.local() or not kwtools['inc'] - or kwtools['hgcmd'] in nokwcommands.split() + if (not repo.local() or kwtools['hgcmd'] in nokwcommands.split() or '.hg' in util.splitpath(repo.root) or repo._url.startswith('bundle:')): return except AttributeError: pass - kwtools['templater'] = kwt = kwtemplater(ui, repo) + inc, exc = [], ['.hg*'] + for pat, opt in ui.configitems('keyword'): + if opt != 'ignore': + inc.append(pat) + else: + exc.append(pat) + if not inc: + return + + kwtools['templater'] = kwt = kwtemplater(ui, repo, inc, exc) class kwrepo(repo.__class__): def file(self, f):
--- a/tests/test-keyword Wed Jul 21 22:22:28 2010 +0200 +++ b/tests/test-keyword Sun Jul 25 20:01:33 2010 -0500 @@ -283,8 +283,17 @@ echo % cat a cat a +echo % clone +cd .. + +echo % expansion in dest +hg --quiet clone Test globalconf +cat globalconf/a +echo % no expansion in dest +hg --quiet --config 'keyword.**=ignore' clone Test localconf +cat localconf/a + echo % clone to test incoming -cd .. hg clone -r1 Test Test-a cd Test-a cat <<EOF >> .hg/hgrc
--- a/tests/test-keyword.out Wed Jul 21 22:22:28 2010 +0200 +++ b/tests/test-keyword.out Sun Jul 25 20:01:33 2010 -0500 @@ -333,6 +333,17 @@ do not process $Id: xxx $ $Xinfo: User Name <user@example.com>: firstline $ +% clone +% expansion in dest +expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ +do not process $Id: +xxx $ +$Xinfo: User Name <user@example.com>: firstline $ +% no expansion in dest +expand $Id$ +do not process $Id: +xxx $ +$Xinfo$ % clone to test incoming requesting all changes adding changesets