mercurial/cmdutil.py
changeset 41651 b2df5dc3ebfb
parent 41650 f8b18583049f
child 41652 6a447a3d1bd0
equal deleted inserted replaced
41650:f8b18583049f 41651:b2df5dc3ebfb
  2190                 ui.status(_("skipping missing subrepository: %s\n")
  2190                 ui.status(_("skipping missing subrepository: %s\n")
  2191                                % m.rel(subpath))
  2191                                % m.rel(subpath))
  2192 
  2192 
  2193     return ret
  2193     return ret
  2194 
  2194 
  2195 def remove(ui, repo, m, prefix, after, force, subrepos, dryrun, warnings=None):
  2195 def remove(ui, repo, m, prefix, uipathfn, after, force, subrepos, dryrun,
       
  2196            warnings=None):
  2196     ret = 0
  2197     ret = 0
  2197     s = repo.status(match=m, clean=True)
  2198     s = repo.status(match=m, clean=True)
  2198     modified, added, deleted, clean = s[0], s[1], s[3], s[6]
  2199     modified, added, deleted, clean = s[0], s[1], s[3], s[6]
  2199 
  2200 
  2200     wctx = repo[None]
  2201     wctx = repo[None]
  2209     progress = ui.makeprogress(_('searching'), total=len(subs),
  2210     progress = ui.makeprogress(_('searching'), total=len(subs),
  2210                                unit=_('subrepos'))
  2211                                unit=_('subrepos'))
  2211     for subpath in subs:
  2212     for subpath in subs:
  2212         submatch = matchmod.subdirmatcher(subpath, m)
  2213         submatch = matchmod.subdirmatcher(subpath, m)
  2213         subprefix = repo.wvfs.reljoin(prefix, subpath)
  2214         subprefix = repo.wvfs.reljoin(prefix, subpath)
       
  2215         subuipathfn = scmutil.subdiruipathfn(subpath, uipathfn)
  2214         if subrepos or m.exact(subpath) or any(submatch.files()):
  2216         if subrepos or m.exact(subpath) or any(submatch.files()):
  2215             progress.increment()
  2217             progress.increment()
  2216             sub = wctx.sub(subpath)
  2218             sub = wctx.sub(subpath)
  2217             try:
  2219             try:
  2218                 if sub.removefiles(submatch, subprefix, after, force, subrepos,
  2220                 if sub.removefiles(submatch, subprefix, subuipathfn, after,
  2219                                    dryrun, warnings):
  2221                                    force, subrepos, dryrun, warnings):
  2220                     ret = 1
  2222                     ret = 1
  2221             except error.LookupError:
  2223             except error.LookupError:
  2222                 warnings.append(_("skipping missing subrepository: %s\n")
  2224                 warnings.append(_("skipping missing subrepository: %s\n")
  2223                                % m.rel(subpath))
  2225                                % uipathfn(subpath))
  2224     progress.complete()
  2226     progress.complete()
  2225 
  2227 
  2226     # warn about failure to delete explicit files/dirs
  2228     # warn about failure to delete explicit files/dirs
  2227     deleteddirs = util.dirs(deleted)
  2229     deleteddirs = util.dirs(deleted)
  2228     files = m.files()
  2230     files = m.files()
  2242             continue
  2244             continue
  2243 
  2245 
  2244         if repo.wvfs.exists(f):
  2246         if repo.wvfs.exists(f):
  2245             if repo.wvfs.isdir(f):
  2247             if repo.wvfs.isdir(f):
  2246                 warnings.append(_('not removing %s: no tracked files\n')
  2248                 warnings.append(_('not removing %s: no tracked files\n')
  2247                         % m.rel(f))
  2249                         % uipathfn(f))
  2248             else:
  2250             else:
  2249                 warnings.append(_('not removing %s: file is untracked\n')
  2251                 warnings.append(_('not removing %s: file is untracked\n')
  2250                         % m.rel(f))
  2252                         % uipathfn(f))
  2251         # missing files will generate a warning elsewhere
  2253         # missing files will generate a warning elsewhere
  2252         ret = 1
  2254         ret = 1
  2253     progress.complete()
  2255     progress.complete()
  2254 
  2256 
  2255     if force:
  2257     if force:
  2261                                    unit=_('files'))
  2263                                    unit=_('files'))
  2262         for f in remaining:
  2264         for f in remaining:
  2263             progress.increment()
  2265             progress.increment()
  2264             if ui.verbose or (f in files):
  2266             if ui.verbose or (f in files):
  2265                 warnings.append(_('not removing %s: file still exists\n')
  2267                 warnings.append(_('not removing %s: file still exists\n')
  2266                                 % m.rel(f))
  2268                                 % uipathfn(f))
  2267             ret = 1
  2269             ret = 1
  2268         progress.complete()
  2270         progress.complete()
  2269     else:
  2271     else:
  2270         list = deleted + clean
  2272         list = deleted + clean
  2271         progress = ui.makeprogress(_('skipping'),
  2273         progress = ui.makeprogress(_('skipping'),
  2272                                    total=(len(modified) + len(added)),
  2274                                    total=(len(modified) + len(added)),
  2273                                    unit=_('files'))
  2275                                    unit=_('files'))
  2274         for f in modified:
  2276         for f in modified:
  2275             progress.increment()
  2277             progress.increment()
  2276             warnings.append(_('not removing %s: file is modified (use -f'
  2278             warnings.append(_('not removing %s: file is modified (use -f'
  2277                       ' to force removal)\n') % m.rel(f))
  2279                       ' to force removal)\n') % uipathfn(f))
  2278             ret = 1
  2280             ret = 1
  2279         for f in added:
  2281         for f in added:
  2280             progress.increment()
  2282             progress.increment()
  2281             warnings.append(_("not removing %s: file has been marked for add"
  2283             warnings.append(_("not removing %s: file has been marked for add"
  2282                       " (use 'hg forget' to undo add)\n") % m.rel(f))
  2284                       " (use 'hg forget' to undo add)\n") % uipathfn(f))
  2283             ret = 1
  2285             ret = 1
  2284         progress.complete()
  2286         progress.complete()
  2285 
  2287 
  2286     list = sorted(list)
  2288     list = sorted(list)
  2287     progress = ui.makeprogress(_('deleting'), total=len(list),
  2289     progress = ui.makeprogress(_('deleting'), total=len(list),
  2288                                unit=_('files'))
  2290                                unit=_('files'))
  2289     for f in list:
  2291     for f in list:
  2290         if ui.verbose or not m.exact(f):
  2292         if ui.verbose or not m.exact(f):
  2291             progress.increment()
  2293             progress.increment()
  2292             ui.status(_('removing %s\n') % m.rel(f),
  2294             ui.status(_('removing %s\n') % uipathfn(f),
  2293                       label='ui.addremove.removed')
  2295                       label='ui.addremove.removed')
  2294     progress.complete()
  2296     progress.complete()
  2295 
  2297 
  2296     if not dryrun:
  2298     if not dryrun:
  2297         with repo.wlock():
  2299         with repo.wlock():