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) |