Show More
@@ -2052,6 +2052,59 b' def forget(ui, repo, match, prefix, expl' | |||
|
2052 | 2052 | forgot.extend(forget) |
|
2053 | 2053 | return bad, forgot |
|
2054 | 2054 | |
|
2055 | def remove(ui, repo, m, after, force): | |
|
2056 | ret = 0 | |
|
2057 | s = repo.status(match=m, clean=True) | |
|
2058 | modified, added, deleted, clean = s[0], s[1], s[3], s[6] | |
|
2059 | ||
|
2060 | # warn about failure to delete explicit files/dirs | |
|
2061 | wctx = repo[None] | |
|
2062 | for f in m.files(): | |
|
2063 | if f in repo.dirstate or f in wctx.dirs(): | |
|
2064 | continue | |
|
2065 | if os.path.exists(m.rel(f)): | |
|
2066 | if os.path.isdir(m.rel(f)): | |
|
2067 | ui.warn(_('not removing %s: no tracked files\n') % m.rel(f)) | |
|
2068 | else: | |
|
2069 | ui.warn(_('not removing %s: file is untracked\n') % m.rel(f)) | |
|
2070 | # missing files will generate a warning elsewhere | |
|
2071 | ret = 1 | |
|
2072 | ||
|
2073 | if force: | |
|
2074 | list = modified + deleted + clean + added | |
|
2075 | elif after: | |
|
2076 | list = deleted | |
|
2077 | for f in modified + added + clean: | |
|
2078 | ui.warn(_('not removing %s: file still exists\n') % m.rel(f)) | |
|
2079 | ret = 1 | |
|
2080 | else: | |
|
2081 | list = deleted + clean | |
|
2082 | for f in modified: | |
|
2083 | ui.warn(_('not removing %s: file is modified (use -f' | |
|
2084 | ' to force removal)\n') % m.rel(f)) | |
|
2085 | ret = 1 | |
|
2086 | for f in added: | |
|
2087 | ui.warn(_('not removing %s: file has been marked for add' | |
|
2088 | ' (use forget to undo)\n') % m.rel(f)) | |
|
2089 | ret = 1 | |
|
2090 | ||
|
2091 | for f in sorted(list): | |
|
2092 | if ui.verbose or not m.exact(f): | |
|
2093 | ui.status(_('removing %s\n') % m.rel(f)) | |
|
2094 | ||
|
2095 | wlock = repo.wlock() | |
|
2096 | try: | |
|
2097 | if not after: | |
|
2098 | for f in list: | |
|
2099 | if f in added: | |
|
2100 | continue # we never unlink added files on remove | |
|
2101 | util.unlinkpath(repo.wjoin(f), ignoremissing=True) | |
|
2102 | repo[None].forget(list) | |
|
2103 | finally: | |
|
2104 | wlock.release() | |
|
2105 | ||
|
2106 | return ret | |
|
2107 | ||
|
2055 | 2108 | def cat(ui, repo, ctx, matcher, prefix, **opts): |
|
2056 | 2109 | err = 1 |
|
2057 | 2110 |
@@ -5125,62 +5125,12 b' def remove(ui, repo, *pats, **opts):' | |||
|
5125 | 5125 | Returns 0 on success, 1 if any warnings encountered. |
|
5126 | 5126 | """ |
|
5127 | 5127 | |
|
5128 | ret = 0 | |
|
5129 | 5128 | after, force = opts.get('after'), opts.get('force') |
|
5130 | 5129 | if not pats and not after: |
|
5131 | 5130 | raise util.Abort(_('no files specified')) |
|
5132 | 5131 | |
|
5133 | 5132 | m = scmutil.match(repo[None], pats, opts) |
|
5134 | s = repo.status(match=m, clean=True) | |
|
5135 | modified, added, deleted, clean = s[0], s[1], s[3], s[6] | |
|
5136 | ||
|
5137 | # warn about failure to delete explicit files/dirs | |
|
5138 | wctx = repo[None] | |
|
5139 | for f in m.files(): | |
|
5140 | if f in repo.dirstate or f in wctx.dirs(): | |
|
5141 | continue | |
|
5142 | if os.path.exists(m.rel(f)): | |
|
5143 | if os.path.isdir(m.rel(f)): | |
|
5144 | ui.warn(_('not removing %s: no tracked files\n') % m.rel(f)) | |
|
5145 | else: | |
|
5146 | ui.warn(_('not removing %s: file is untracked\n') % m.rel(f)) | |
|
5147 | # missing files will generate a warning elsewhere | |
|
5148 | ret = 1 | |
|
5149 | ||
|
5150 | if force: | |
|
5151 | list = modified + deleted + clean + added | |
|
5152 | elif after: | |
|
5153 | list = deleted | |
|
5154 | for f in modified + added + clean: | |
|
5155 | ui.warn(_('not removing %s: file still exists\n') % m.rel(f)) | |
|
5156 | ret = 1 | |
|
5157 | else: | |
|
5158 | list = deleted + clean | |
|
5159 | for f in modified: | |
|
5160 | ui.warn(_('not removing %s: file is modified (use -f' | |
|
5161 | ' to force removal)\n') % m.rel(f)) | |
|
5162 | ret = 1 | |
|
5163 | for f in added: | |
|
5164 | ui.warn(_('not removing %s: file has been marked for add' | |
|
5165 | ' (use forget to undo)\n') % m.rel(f)) | |
|
5166 | ret = 1 | |
|
5167 | ||
|
5168 | for f in sorted(list): | |
|
5169 | if ui.verbose or not m.exact(f): | |
|
5170 | ui.status(_('removing %s\n') % m.rel(f)) | |
|
5171 | ||
|
5172 | wlock = repo.wlock() | |
|
5173 | try: | |
|
5174 | if not after: | |
|
5175 | for f in list: | |
|
5176 | if f in added: | |
|
5177 | continue # we never unlink added files on remove | |
|
5178 | util.unlinkpath(repo.wjoin(f), ignoremissing=True) | |
|
5179 | repo[None].forget(list) | |
|
5180 | finally: | |
|
5181 | wlock.release() | |
|
5182 | ||
|
5183 | return ret | |
|
5133 | return cmdutil.remove(ui, repo, m, after, force) | |
|
5184 | 5134 | |
|
5185 | 5135 | @command('rename|move|mv', |
|
5186 | 5136 | [('A', 'after', None, _('record a rename that has already occurred')), |
General Comments 0
You need to be logged in to leave comments.
Login now