2058 s = repo.status(match=m, clean=True) |
2058 s = repo.status(match=m, clean=True) |
2059 modified, added, deleted, clean = s[0], s[1], s[3], s[6] |
2059 modified, added, deleted, clean = s[0], s[1], s[3], s[6] |
2060 |
2060 |
2061 wctx = repo[None] |
2061 wctx = repo[None] |
2062 |
2062 |
2063 if subrepos: |
2063 for subpath in sorted(wctx.substate): |
2064 for subpath in sorted(wctx.substate): |
2064 def matchessubrepo(matcher, subpath): |
|
2065 if matcher.exact(subpath): |
|
2066 return True |
|
2067 for f in matcher.files(): |
|
2068 if f.startswith(subpath): |
|
2069 return True |
|
2070 return False |
|
2071 |
|
2072 if subrepos or matchessubrepo(m, subpath): |
2065 sub = wctx.sub(subpath) |
2073 sub = wctx.sub(subpath) |
2066 try: |
2074 try: |
2067 submatch = matchmod.narrowmatcher(subpath, m) |
2075 submatch = matchmod.narrowmatcher(subpath, m) |
2068 if sub.removefiles(ui, submatch, prefix, after, force, |
2076 if sub.removefiles(ui, submatch, prefix, after, force, |
2069 subrepos): |
2077 subrepos): |
2078 for subpath in wctx.substate: |
2086 for subpath in wctx.substate: |
2079 if f.startswith(subpath): |
2087 if f.startswith(subpath): |
2080 return True |
2088 return True |
2081 return False |
2089 return False |
2082 |
2090 |
2083 if f in repo.dirstate or f in wctx.dirs() or (subrepos and insubrepo()): |
2091 if f in repo.dirstate or f in wctx.dirs() or insubrepo(): |
2084 continue |
2092 continue |
2085 |
2093 |
2086 if os.path.exists(m.rel(join(f))): |
2094 if os.path.exists(m.rel(join(f))): |
2087 if os.path.isdir(m.rel(join(f))): |
2095 if os.path.isdir(m.rel(join(f))): |
2088 ui.warn(_('not removing %s: no tracked files\n') |
2096 ui.warn(_('not removing %s: no tracked files\n') |