mercurial/commands.py
changeset 30957 14794735faa8
parent 30956 db30c6bfeb70
child 30958 df73368c87c3
equal deleted inserted replaced
30956:db30c6bfeb70 30957:14794735faa8
    31     discovery,
    31     discovery,
    32     encoding,
    32     encoding,
    33     error,
    33     error,
    34     exchange,
    34     exchange,
    35     extensions,
    35     extensions,
    36     formatter,
       
    37     graphmod,
    36     graphmod,
    38     hbisect,
    37     hbisect,
    39     help,
    38     help,
    40     hg,
    39     hg,
    41     lock as lockmod,
    40     lock as lockmod,
    49     scmutil,
    48     scmutil,
    50     server,
    49     server,
    51     sshserver,
    50     sshserver,
    52     streamclone,
    51     streamclone,
    53     templatekw,
    52     templatekw,
    54     templater,
       
    55     ui as uimod,
    53     ui as uimod,
    56     util,
    54     util,
    57 )
    55 )
    58 
    56 
    59 release = lockmod.release
    57 release = lockmod.release
  1852     Returns 0 on success, 1 if errors are encountered.
  1850     Returns 0 on success, 1 if errors are encountered.
  1853     """
  1851     """
  1854     with repo.wlock(False):
  1852     with repo.wlock(False):
  1855         return cmdutil.copy(ui, repo, pats, opts)
  1853         return cmdutil.copy(ui, repo, pats, opts)
  1856 
  1854 
  1857 @command('debugtemplate',
       
  1858     [('r', 'rev', [], _('apply template on changesets'), _('REV')),
       
  1859      ('D', 'define', [], _('define template keyword'), _('KEY=VALUE'))],
       
  1860     _('[-r REV]... [-D KEY=VALUE]... TEMPLATE'),
       
  1861     optionalrepo=True)
       
  1862 def debugtemplate(ui, repo, tmpl, **opts):
       
  1863     """parse and apply a template
       
  1864 
       
  1865     If -r/--rev is given, the template is processed as a log template and
       
  1866     applied to the given changesets. Otherwise, it is processed as a generic
       
  1867     template.
       
  1868 
       
  1869     Use --verbose to print the parsed tree.
       
  1870     """
       
  1871     revs = None
       
  1872     if opts['rev']:
       
  1873         if repo is None:
       
  1874             raise error.RepoError(_('there is no Mercurial repository here '
       
  1875                                     '(.hg not found)'))
       
  1876         revs = scmutil.revrange(repo, opts['rev'])
       
  1877 
       
  1878     props = {}
       
  1879     for d in opts['define']:
       
  1880         try:
       
  1881             k, v = (e.strip() for e in d.split('=', 1))
       
  1882             if not k:
       
  1883                 raise ValueError
       
  1884             props[k] = v
       
  1885         except ValueError:
       
  1886             raise error.Abort(_('malformed keyword definition: %s') % d)
       
  1887 
       
  1888     if ui.verbose:
       
  1889         aliases = ui.configitems('templatealias')
       
  1890         tree = templater.parse(tmpl)
       
  1891         ui.note(templater.prettyformat(tree), '\n')
       
  1892         newtree = templater.expandaliases(tree, aliases)
       
  1893         if newtree != tree:
       
  1894             ui.note(("* expanded:\n"), templater.prettyformat(newtree), '\n')
       
  1895 
       
  1896     mapfile = None
       
  1897     if revs is None:
       
  1898         k = 'debugtemplate'
       
  1899         t = formatter.maketemplater(ui, k, tmpl)
       
  1900         ui.write(templater.stringify(t(k, **props)))
       
  1901     else:
       
  1902         displayer = cmdutil.changeset_templater(ui, repo, None, opts, tmpl,
       
  1903                                                 mapfile, buffered=False)
       
  1904         for r in revs:
       
  1905             displayer.show(repo[r], **props)
       
  1906         displayer.close()
       
  1907 
  1855 
  1908 @command('debugwalk', walkopts, _('[OPTION]... [FILE]...'), inferrepo=True)
  1856 @command('debugwalk', walkopts, _('[OPTION]... [FILE]...'), inferrepo=True)
  1909 def debugwalk(ui, repo, *pats, **opts):
  1857 def debugwalk(ui, repo, *pats, **opts):
  1910     """show how files match on given patterns"""
  1858     """show how files match on given patterns"""
  1911     m = scmutil.match(repo[None], pats, opts)
  1859     m = scmutil.match(repo[None], pats, opts)