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(): |