mercurial/commands.py
changeset 15912 2bd54ffaa27e
parent 15911 c654eac03452
child 15935 6c97eb445341
equal deleted inserted replaced
15911:c654eac03452 15912:2bd54ffaa27e
    11 import os, re, difflib, time, tempfile, errno
    11 import os, re, difflib, time, tempfile, errno
    12 import hg, scmutil, util, revlog, extensions, copies, error, bookmarks
    12 import hg, scmutil, util, revlog, extensions, copies, error, bookmarks
    13 import patch, help, url, encoding, templatekw, discovery
    13 import patch, help, url, encoding, templatekw, discovery
    14 import archival, changegroup, cmdutil, hbisect
    14 import archival, changegroup, cmdutil, hbisect
    15 import sshserver, hgweb, hgweb.server, commandserver
    15 import sshserver, hgweb, hgweb.server, commandserver
    16 import match as matchmod
       
    17 import merge as mergemod
    16 import merge as mergemod
    18 import minirst, revset, fileset
    17 import minirst, revset, fileset
    19 import dagparser, context, simplemerge
    18 import dagparser, context, simplemerge
    20 import random, setdiscovery, treediscovery, dagutil
    19 import random, setdiscovery, treediscovery, dagutil
    21 import phases
    20 import phases
  2447     """
  2446     """
  2448 
  2447 
  2449     if not pats:
  2448     if not pats:
  2450         raise util.Abort(_('no files specified'))
  2449         raise util.Abort(_('no files specified'))
  2451 
  2450 
  2452     wctx = repo[None]
  2451     m = scmutil.match(repo[None], pats, opts)
  2453     m = scmutil.match(wctx, pats, opts)
  2452     rejected = cmdutil.forget(ui, repo, m, prefix="", explicitonly=False)[0]
  2454     s = repo.status(match=m, clean=True)
  2453     return rejected and 1 or 0
  2455     forget = sorted(s[0] + s[1] + s[3] + s[6])
       
  2456     subforget = {}
       
  2457     errs = 0
       
  2458 
       
  2459     for subpath in wctx.substate:
       
  2460         sub = wctx.sub(subpath)
       
  2461         try:
       
  2462             submatch = matchmod.narrowmatcher(subpath, m)
       
  2463             for fsub in sub.walk(submatch):
       
  2464                 if submatch.exact(fsub):
       
  2465                     subforget[subpath + '/' + fsub] = (fsub, sub)
       
  2466         except error.LookupError:
       
  2467             ui.status(_("skipping missing subrepository: %s\n") % subpath)
       
  2468 
       
  2469     for f in m.files():
       
  2470         if f not in repo.dirstate and not os.path.isdir(m.rel(f)):
       
  2471             if f not in subforget:
       
  2472                 if os.path.exists(m.rel(f)):
       
  2473                     ui.warn(_('not removing %s: file is already untracked\n')
       
  2474                             % m.rel(f))
       
  2475                 errs = 1
       
  2476 
       
  2477     for f in forget:
       
  2478         if ui.verbose or not m.exact(f):
       
  2479             ui.status(_('removing %s\n') % m.rel(f))
       
  2480 
       
  2481     if ui.verbose:
       
  2482         for f in sorted(subforget.keys()):
       
  2483             ui.status(_('removing %s\n') % m.rel(f))
       
  2484 
       
  2485     wctx.forget(forget)
       
  2486 
       
  2487     for f in sorted(subforget.keys()):
       
  2488         fsub, sub = subforget[f]
       
  2489         sub.forget([fsub])
       
  2490 
       
  2491     return errs
       
  2492 
  2454 
  2493 @command(
  2455 @command(
  2494     'graft',
  2456     'graft',
  2495     [('c', 'continue', False, _('resume interrupted graft')),
  2457     [('c', 'continue', False, _('resume interrupted graft')),
  2496      ('e', 'edit', False, _('invoke editor on commit messages')),
  2458      ('e', 'edit', False, _('invoke editor on commit messages')),