Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/commands.py @ 8902:b9a8b616521d
Add a forget command for easily untracking files.
This command does exactly what 'hg remove -Af [FILES]' does.
The reason for creating a new command is that the options for 'hg remove'
are confusing (-A removes only deleted files, -f forces deletion, and using
both means *the exact opposite of both*).
[mpm: simplified help text, code, and updated tests]
author | Steve Losh <steve@stevelosh.com> |
---|---|
date | Sun, 31 May 2009 03:09:00 -0400 |
parents | d0a3eadfbdb3 |
children | d403cf4eb32d |
comparison
equal
deleted
inserted
replaced
8901:94319ae527cf | 8902:b9a8b616521d |
---|---|
22 | 22 |
23 Schedule files to be version controlled and added to the | 23 Schedule files to be version controlled and added to the |
24 repository. | 24 repository. |
25 | 25 |
26 The files will be added to the repository at the next commit. To | 26 The files will be added to the repository at the next commit. To |
27 undo an add before that, see hg revert. | 27 undo an add before that, see hg forget. |
28 | 28 |
29 If no names are given, add all files to the repository. | 29 If no names are given, add all files to the repository. |
30 """ | 30 """ |
31 | 31 |
32 bad = [] | 32 bad = [] |
1135 else: | 1135 else: |
1136 ui.note(_('exporting patch:\n')) | 1136 ui.note(_('exporting patch:\n')) |
1137 patch.export(repo, revs, template=opts.get('output'), | 1137 patch.export(repo, revs, template=opts.get('output'), |
1138 switch_parent=opts.get('switch_parent'), | 1138 switch_parent=opts.get('switch_parent'), |
1139 opts=patch.diffopts(ui, opts)) | 1139 opts=patch.diffopts(ui, opts)) |
1140 | |
1141 def forget(ui, repo, *pats, **opts): | |
1142 """forget the specified files on the next commit | |
1143 | |
1144 Mark the specified files so they will no longer be tracked | |
1145 after the next commit. | |
1146 | |
1147 This only removes files from the current branch, not from the | |
1148 entire project history, and it does not delete them from the | |
1149 working directory. | |
1150 | |
1151 To undo a forget before the next commit, see hg add. | |
1152 """ | |
1153 | |
1154 if not pats: | |
1155 raise util.Abort(_('no files specified')) | |
1156 | |
1157 m = cmdutil.match(repo, pats, opts) | |
1158 s = repo.status(match=m, clean=True) | |
1159 forget = sorted(s[0] + s[1] + s[3] + s[6]) | |
1160 | |
1161 for f in m.files(): | |
1162 if f not in repo.dirstate and not os.path.isdir(m.rel(f)): | |
1163 ui.warn(_('not removing %s: file is already untracked\n') | |
1164 % m.rel(f)) | |
1165 | |
1166 for f in forget: | |
1167 if ui.verbose or not m.exact(f): | |
1168 ui.status(_('removing %s\n') % m.rel(f)) | |
1169 | |
1170 repo.remove(forget, unlink=False) | |
1140 | 1171 |
1141 def grep(ui, repo, pattern, *pats, **opts): | 1172 def grep(ui, repo, pattern, *pats, **opts): |
1142 """search for a pattern in specified files and revisions | 1173 """search for a pattern in specified files and revisions |
1143 | 1174 |
1144 Search revisions of files for a regular expression. | 1175 Search revisions of files for a regular expression. |
3267 (export, | 3298 (export, |
3268 [('o', 'output', '', _('print output to file with formatted name')), | 3299 [('o', 'output', '', _('print output to file with formatted name')), |
3269 ('', 'switch-parent', None, _('diff against the second parent')) | 3300 ('', 'switch-parent', None, _('diff against the second parent')) |
3270 ] + diffopts, | 3301 ] + diffopts, |
3271 _('[OPTION]... [-o OUTFILESPEC] REV...')), | 3302 _('[OPTION]... [-o OUTFILESPEC] REV...')), |
3303 "^forget": | |
3304 (forget, | |
3305 [] + walkopts, | |
3306 _('[OPTION]... FILE...')), | |
3272 "grep": | 3307 "grep": |
3273 (grep, | 3308 (grep, |
3274 [('0', 'print0', None, _('end fields with NUL')), | 3309 [('0', 'print0', None, _('end fields with NUL')), |
3275 ('', 'all', None, _('print all revisions that match')), | 3310 ('', 'all', None, _('print all revisions that match')), |
3276 ('f', 'follow', None, | 3311 ('f', 'follow', None, |