hgkw/keyword.py
branch0.9.2compat
changeset 704 772628d1ccb5
parent 698 0b77aa7ff437
child 984 a4ea5c2d3ff3
--- a/hgkw/keyword.py	Thu Mar 11 19:56:41 2010 +0100
+++ b/hgkw/keyword.py	Wed Mar 17 23:16:44 2010 +0100
@@ -314,7 +314,7 @@
         Caveat: localrepository._link fails on Windows.'''
         return self.matcher(path) and not islink(path)
 
-    def overwrite(self, node, expand, files):
+    def overwrite(self, node, expand, candidates):
         '''Overwrites selected files expanding/shrinking keywords.'''
         # repo[changeid] introduced in f6c00b17387c
         if node is not None:     # commit
@@ -323,25 +323,23 @@
             except TypeError:
                 ctx = self.repo.changectx(node)
             mf = ctx.manifest()
-            files = [f for f in ctx.files() if f in mf]
-            notify = self.ui.debug
+            candidates = [f for f in ctx.files() if f in mf]
         else:                    # kwexpand/kwshrink
             try:
                 ctx = self.repo['.']
             except TypeError:
                 ctx = self.repo.changectx()
             mf = ctx.manifest()
-            notify = self.ui.note
         if hasattr(ctx, 'flags'):
             # 51b0e799352f
             islink = lambda p: 'l' in ctx.flags(p)
         else:
             islink = mf.linkf
-        candidates = [f for f in files if self.iskwfile(f, islink)]
+        candidates = [f for f in candidates if self.iskwfile(f, islink)]
         if candidates:
             self.restrict = True # do not expand when reading
-            candidates.sort()
-            action = expand and 'expanding' or 'shrinking'
+            msg = (expand and _('overwriting %s expanding keywords\n')
+                   or _('overwriting %s shrinking keywords\n'))
             overwritten = []
             for f in candidates:
                 fp = self.repo.file(f)
@@ -355,7 +353,7 @@
                 else:
                     found = self.re_kw.search(data)
                 if found:
-                    notify(_('overwriting %s %s keywords\n') % (f, action))
+                    self.ui.note(msg % f)
                     self.repo.wwrite(f, data, mf.flags(f))
                     overwritten.append(f)
             _normal(self.repo, overwritten)
@@ -455,10 +453,10 @@
     Show current, custom, or default keyword template maps and their
     expansions.
 
-    Extend current configuration by specifying maps as arguments and
-    optionally by reading from an additional hgrc file.
+    Extend the current configuration by specifying maps as arguments
+    and using -f/--rcfile to source an external hgrc file.
 
-    Override current keyword template maps with "default" option.
+    Use -d/--default to disable current configuration.
     '''
     def demoitems(section, items):
         items.sort()
@@ -466,34 +464,41 @@
         for k, v in items:
             ui.write('%s = %s\n' % (k, v))
 
-    msg = 'hg keyword config and expansion example'
     kwstatus = 'current'
     fn = 'demo.txt'
-    branchname = 'demobranch'
     tmpdir = tempfile.mkdtemp('', 'kwdemo.')
     ui.note(_('creating temporary repository at %s\n') % tmpdir)
     repo = localrepo.localrepository(ui, tmpdir, True)
     ui.setconfig('keyword', fn, '')
+
+    uikwmaps = ui.configitems('keywordmaps')
     if args or opts.get('rcfile'):
-        kwstatus = 'custom'
-    if opts.get('rcfile'):
-        ui.readconfig(opts.get('rcfile'))
-    if opts.get('default'):
-        kwstatus = 'default'
+        ui.status(_('\n\tconfiguration using custom keyword template maps\n'))
+        if uikwmaps:
+            ui.status(_('\textending current template maps\n'))
+        if opts.get('default') or not uikwmaps:
+            ui.status(_('\toverriding default template maps\n'))
+        if opts.get('rcfile'):
+            ui.readconfig(opts.get('rcfile'))
+        if args:
+            # simulate hgrc parsing
+            rcmaps = ['[keywordmaps]\n'] + [a + '\n' for a in args]
+            fp = repo.opener('hgrc', 'w')
+            fp.writelines(rcmaps)
+            fp.close()
+            ui.readconfig(repo.join('hgrc'))
+        kwmaps = dict(ui.configitems('keywordmaps'))
+    elif opts.get('default'):
+        ui.status(_('\n\tconfiguration using default keyword template maps\n'))
         kwmaps = kwtemplater.templates
-        if ui.configitems('keywordmaps'):
-            # override maps from optional rcfile
+        if uikwmaps:
+            ui.status(_('\tdisabling current template maps\n'))
             for k, v in kwmaps.iteritems():
                 ui.setconfig('keywordmaps', k, v)
-    elif args:
-        # simulate hgrc parsing
-        rcmaps = ['[keywordmaps]\n'] + [a + '\n' for a in args]
-        fp = repo.opener('hgrc', 'w')
-        fp.writelines(rcmaps)
-        fp.close()
-        ui.readconfig(repo.join('hgrc'))
-    if not opts.get('default'):
-        kwmaps = dict(ui.configitems('keywordmaps')) or kwtemplater.templates
+    else:
+        ui.status(_('\n\tconfiguration using current keyword template maps\n'))
+        kwmaps = dict(uikwmaps) or kwtemplater.templates
+
     reposetup(ui, repo)
     for k, v in ui.configitems('extensions'):
         if k.endswith('keyword'):
@@ -508,25 +513,21 @@
     keywords = '$' + '$\n$'.join(kwkeys) + '$\n'
     repo.wopener(fn, 'w').write(keywords)
     repo.add([fn])
-    path = repo.wjoin(fn)
-    ui.note(_('\n%s keywords written to %s:\n') % (kwstatus, path))
+    ui.note(_('\nkeywords written to %s:\n') % fn)
     ui.note(keywords)
-    ui.note('\nhg -R "%s" branch "%s"\n' % (tmpdir, branchname))
-    # silence branch command if not verbose
-    quiet = ui.quiet
-    ui.quiet = not ui.verbose
-    commands.branch(ui, repo, branchname)
-    ui.quiet = quiet
+    try:
+        repo.dirstate.setbranch('demobranch')
+    except AttributeError:
+        # before 7e1c8a565a4f
+        repo.opener('branch', 'w').write('demobranch\n')
     for name, cmd in ui.configitems('hooks'):
         if name.split('.', 1)[0].find('commit') > -1:
             repo.ui.setconfig('hooks', name, '')
-    ui.note(_('unhooked all commit hooks\n'))
-    ui.note('hg -R "%s" ci -m "%s"\n' % (tmpdir, msg))
+    msg = _('hg keyword configuration and expansion example')
+    ui.note("hg ci -m '%s'\n" % msg)
     repo.commit(text=msg)
-    fmt = ui.verbose and ' in %s' % path or ''
-    ui.status(_('\n\t%s keywords expanded%s\n') % (kwstatus, fmt))
+    ui.status(_('\n\tkeywords expanded\n'))
     ui.write(repo.wread(fn))
-    ui.debug('\nremoving temporary repository %s\n' % tmpdir)
     shutil.rmtree(tmpdir, ignore_errors=True)
 
 def expand(ui, repo, *pats, **opts):
@@ -552,10 +553,9 @@
     See "hg help keyword" on how to construct patterns both for
     inclusion and exclusion of files.
 
-    Use -u/--untracked to list untracked files as well.
-
     With -A/--all and -v/--verbose the codes used to show the status
     of files are:
+
       K = keyword expansion candidate
       k = keyword expansion candidate (not tracked)
       I = ignored