mercurial/commands.py
changeset 6276 c93ca83a3354
parent 6262 de7256c82fad
child 6296 a9e6b8875805
equal deleted inserted replaced
6275:fda369b5779c 6276:c93ca83a3354
     7 
     7 
     8 from node import hex, nullid, nullrev, short
     8 from node import hex, nullid, nullrev, short
     9 from repo import RepoError
     9 from repo import RepoError
    10 from i18n import _
    10 from i18n import _
    11 import os, re, sys, urllib
    11 import os, re, sys, urllib
    12 import hg, util, revlog, bundlerepo, extensions
    12 import hg, util, revlog, bundlerepo, extensions, copies
    13 import difflib, patch, time, help, mdiff, tempfile
    13 import difflib, patch, time, help, mdiff, tempfile
    14 import version, socket
    14 import version, socket
    15 import archival, changegroup, cmdutil, hgweb.server, sshserver, hbisect
    15 import archival, changegroup, cmdutil, hgweb.server, sshserver, hbisect
    16 
    16 
    17 # Commands start here, listed alphabetically
    17 # Commands start here, listed alphabetically
  2541                    ('unknown', '?', unknown),
  2541                    ('unknown', '?', unknown),
  2542                    ('ignored', 'I', ignored))
  2542                    ('ignored', 'I', ignored))
  2543 
  2543 
  2544     explicit_changetypes = changetypes + (('clean', 'C', clean),)
  2544     explicit_changetypes = changetypes + (('clean', 'C', clean),)
  2545 
  2545 
       
  2546     copy = {}
       
  2547     showcopy = {}
       
  2548     if ((all or opts.get('copies')) and not opts.get('no_status')):
       
  2549         if opts.get('rev') == []:
       
  2550             # fast path, more correct with merge parents
       
  2551             showcopy = copy = repo.dirstate.copies().copy()
       
  2552         else:
       
  2553             ctxn = repo.changectx(nullid)
       
  2554             ctx1 = repo.changectx(node1)
       
  2555             ctx2 = repo.changectx(node2)
       
  2556             if node2 is None:
       
  2557                 ctx2 = repo.workingctx()
       
  2558             copy, diverge = copies.copies(repo, ctx1, ctx2, ctxn)
       
  2559             for k, v in copy.items():
       
  2560                 copy[v] = k
       
  2561 
  2546     end = opts['print0'] and '\0' or '\n'
  2562     end = opts['print0'] and '\0' or '\n'
  2547 
  2563 
  2548     for opt, char, changes in ([ct for ct in explicit_changetypes
  2564     for opt, char, changes in ([ct for ct in explicit_changetypes
  2549                                 if all or opts[ct[0]]]
  2565                                 if all or opts[ct[0]]]
  2550                                or changetypes):
  2566                                or changetypes):
  2554         else:
  2570         else:
  2555             format = "%s %%s%s" % (char, end)
  2571             format = "%s %%s%s" % (char, end)
  2556 
  2572 
  2557         for f in changes:
  2573         for f in changes:
  2558             ui.write(format % repo.pathto(f, cwd))
  2574             ui.write(format % repo.pathto(f, cwd))
  2559             if ((all or opts.get('copies')) and not opts.get('no_status')):
  2575             if f in copy and (f in added or f in showcopy):
  2560                 copied = repo.dirstate.copied(f)
  2576                 ui.write('  %s%s' % (repo.pathto(copy[f], cwd), end))
  2561                 if copied:
       
  2562                     ui.write('  %s%s' % (repo.pathto(copied, cwd), end))
       
  2563 
  2577 
  2564 def tag(ui, repo, name, rev_=None, **opts):
  2578 def tag(ui, repo, name, rev_=None, **opts):
  2565     """add a tag for the current or given revision
  2579     """add a tag for the current or given revision
  2566 
  2580 
  2567     Name a particular revision using <name>.
  2581     Name a particular revision using <name>.