2179 warn = True |
2179 warn = True |
2180 else: |
2180 else: |
2181 warn = False |
2181 warn = False |
2182 |
2182 |
2183 subs = sorted(wctx.substate) |
2183 subs = sorted(wctx.substate) |
2184 total = len(subs) |
2184 progress = ui.makeprogress(_('searching'), total=len(subs), |
2185 count = 0 |
2185 unit=_('subrepos')) |
2186 for subpath in subs: |
2186 for subpath in subs: |
2187 count += 1 |
|
2188 submatch = matchmod.subdirmatcher(subpath, m) |
2187 submatch = matchmod.subdirmatcher(subpath, m) |
2189 if subrepos or m.exact(subpath) or any(submatch.files()): |
2188 if subrepos or m.exact(subpath) or any(submatch.files()): |
2190 ui.progress(_('searching'), count, total=total, unit=_('subrepos')) |
2189 progress.increment() |
2191 sub = wctx.sub(subpath) |
2190 sub = wctx.sub(subpath) |
2192 try: |
2191 try: |
2193 if sub.removefiles(submatch, prefix, after, force, subrepos, |
2192 if sub.removefiles(submatch, prefix, after, force, subrepos, |
2194 dryrun, warnings): |
2193 dryrun, warnings): |
2195 ret = 1 |
2194 ret = 1 |
2196 except error.LookupError: |
2195 except error.LookupError: |
2197 warnings.append(_("skipping missing subrepository: %s\n") |
2196 warnings.append(_("skipping missing subrepository: %s\n") |
2198 % join(subpath)) |
2197 % join(subpath)) |
2199 ui.progress(_('searching'), None) |
2198 progress.update(None) |
2200 |
2199 |
2201 # warn about failure to delete explicit files/dirs |
2200 # warn about failure to delete explicit files/dirs |
2202 deleteddirs = util.dirs(deleted) |
2201 deleteddirs = util.dirs(deleted) |
2203 files = m.files() |
2202 files = m.files() |
2204 total = len(files) |
2203 progress = ui.makeprogress(_('deleting'), total=len(files), |
2205 count = 0 |
2204 unit=_('files')) |
2206 for f in files: |
2205 for f in files: |
2207 def insubrepo(): |
2206 def insubrepo(): |
2208 for subpath in wctx.substate: |
2207 for subpath in wctx.substate: |
2209 if f.startswith(subpath + '/'): |
2208 if f.startswith(subpath + '/'): |
2210 return True |
2209 return True |
2211 return False |
2210 return False |
2212 |
2211 |
2213 count += 1 |
2212 progress.increment() |
2214 ui.progress(_('deleting'), count, total=total, unit=_('files')) |
|
2215 isdir = f in deleteddirs or wctx.hasdir(f) |
2213 isdir = f in deleteddirs or wctx.hasdir(f) |
2216 if (f in repo.dirstate or isdir or f == '.' |
2214 if (f in repo.dirstate or isdir or f == '.' |
2217 or insubrepo() or f in subs): |
2215 or insubrepo() or f in subs): |
2218 continue |
2216 continue |
2219 |
2217 |
2224 else: |
2222 else: |
2225 warnings.append(_('not removing %s: file is untracked\n') |
2223 warnings.append(_('not removing %s: file is untracked\n') |
2226 % m.rel(f)) |
2224 % m.rel(f)) |
2227 # missing files will generate a warning elsewhere |
2225 # missing files will generate a warning elsewhere |
2228 ret = 1 |
2226 ret = 1 |
2229 ui.progress(_('deleting'), None) |
2227 progress.update(None) |
2230 |
2228 |
2231 if force: |
2229 if force: |
2232 list = modified + deleted + clean + added |
2230 list = modified + deleted + clean + added |
2233 elif after: |
2231 elif after: |
2234 list = deleted |
2232 list = deleted |
2235 remaining = modified + added + clean |
2233 remaining = modified + added + clean |
2236 total = len(remaining) |
2234 progress = ui.makeprogress(_('skipping'), total=len(remaining), |
2237 count = 0 |
2235 unit=_('files')) |
2238 for f in remaining: |
2236 for f in remaining: |
2239 count += 1 |
2237 progress.increment() |
2240 ui.progress(_('skipping'), count, total=total, unit=_('files')) |
|
2241 if ui.verbose or (f in files): |
2238 if ui.verbose or (f in files): |
2242 warnings.append(_('not removing %s: file still exists\n') |
2239 warnings.append(_('not removing %s: file still exists\n') |
2243 % m.rel(f)) |
2240 % m.rel(f)) |
2244 ret = 1 |
2241 ret = 1 |
2245 ui.progress(_('skipping'), None) |
2242 progress.update(None) |
2246 else: |
2243 else: |
2247 list = deleted + clean |
2244 list = deleted + clean |
2248 total = len(modified) + len(added) |
2245 progress = ui.makeprogress(_('skipping'), |
2249 count = 0 |
2246 total=(len(modified) + len(added)), |
|
2247 unit=_('files')) |
2250 for f in modified: |
2248 for f in modified: |
2251 count += 1 |
2249 progress.increment() |
2252 ui.progress(_('skipping'), count, total=total, unit=_('files')) |
|
2253 warnings.append(_('not removing %s: file is modified (use -f' |
2250 warnings.append(_('not removing %s: file is modified (use -f' |
2254 ' to force removal)\n') % m.rel(f)) |
2251 ' to force removal)\n') % m.rel(f)) |
2255 ret = 1 |
2252 ret = 1 |
2256 for f in added: |
2253 for f in added: |
2257 count += 1 |
2254 progress.increment() |
2258 ui.progress(_('skipping'), count, total=total, unit=_('files')) |
|
2259 warnings.append(_("not removing %s: file has been marked for add" |
2255 warnings.append(_("not removing %s: file has been marked for add" |
2260 " (use 'hg forget' to undo add)\n") % m.rel(f)) |
2256 " (use 'hg forget' to undo add)\n") % m.rel(f)) |
2261 ret = 1 |
2257 ret = 1 |
2262 ui.progress(_('skipping'), None) |
2258 progress.update(None) |
2263 |
2259 |
2264 list = sorted(list) |
2260 list = sorted(list) |
2265 total = len(list) |
2261 progress = ui.makeprogress(_('deleting'), total=len(list), |
2266 count = 0 |
2262 unit=_('files')) |
2267 for f in list: |
2263 for f in list: |
2268 count += 1 |
|
2269 if ui.verbose or not m.exact(f): |
2264 if ui.verbose or not m.exact(f): |
2270 ui.progress(_('deleting'), count, total=total, unit=_('files')) |
2265 progress.increment() |
2271 ui.status(_('removing %s\n') % m.rel(f)) |
2266 ui.status(_('removing %s\n') % m.rel(f)) |
2272 ui.progress(_('deleting'), None) |
2267 progress.update(None) |
2273 |
2268 |
2274 if not dryrun: |
2269 if not dryrun: |
2275 with repo.wlock(): |
2270 with repo.wlock(): |
2276 if not after: |
2271 if not after: |
2277 for f in list: |
2272 for f in list: |