mercurial/cmdutil.py
changeset 21040 bdf5ed5246d2
parent 21036 a1a1bd09e4f4
child 21041 a2cc3c08c3ac
equal deleted inserted replaced
21039:d0cc92ba0406 21040:bdf5ed5246d2
  1809 
  1809 
  1810     rejected = wctx.forget(forget, prefix)
  1810     rejected = wctx.forget(forget, prefix)
  1811     bad.extend(f for f in rejected if f in match.files())
  1811     bad.extend(f for f in rejected if f in match.files())
  1812     forgot.extend(forget)
  1812     forgot.extend(forget)
  1813     return bad, forgot
  1813     return bad, forgot
       
  1814 
       
  1815 def cat(ui, repo, ctx, matcher, **opts):
       
  1816     err = 1
       
  1817 
       
  1818     def write(path):
       
  1819         fp = makefileobj(repo, opts.get('output'), ctx.node(), pathname=path)
       
  1820         data = ctx[path].data()
       
  1821         if opts.get('decode'):
       
  1822             data = repo.wwritedata(path, data)
       
  1823         fp.write(data)
       
  1824         fp.close()
       
  1825 
       
  1826     # Automation often uses hg cat on single files, so special case it
       
  1827     # for performance to avoid the cost of parsing the manifest.
       
  1828     if len(matcher.files()) == 1 and not matcher.anypats():
       
  1829         file = matcher.files()[0]
       
  1830         mf = repo.manifest
       
  1831         mfnode = ctx._changeset[0]
       
  1832         if mf.find(mfnode, file)[0]:
       
  1833             write(file)
       
  1834             return 0
       
  1835 
       
  1836     for abs in ctx.walk(matcher):
       
  1837         write(abs)
       
  1838         err = 0
       
  1839     return err
  1814 
  1840 
  1815 def duplicatecopies(repo, rev, fromrev):
  1841 def duplicatecopies(repo, rev, fromrev):
  1816     '''reproduce copies from fromrev to rev in the dirstate'''
  1842     '''reproduce copies from fromrev to rev in the dirstate'''
  1817     for dst, src in copies.pathcopies(repo[fromrev], repo[rev]).iteritems():
  1843     for dst, src in copies.pathcopies(repo[fromrev], repo[rev]).iteritems():
  1818         # copies.pathcopies returns backward renames, so dst might not
  1844         # copies.pathcopies returns backward renames, so dst might not