--- a/mercurial/commands.py Fri Feb 08 13:16:49 2008 -0200
+++ b/mercurial/commands.py Fri Feb 08 18:31:55 2008 -0200
@@ -225,6 +225,7 @@
revert_opts['date'] = None
revert_opts['all'] = True
revert_opts['rev'] = hex(parent)
+ revert_opts['no_backup'] = None
revert(ui, repo, **revert_opts)
commit_opts = opts.copy()
commit_opts['addremove'] = False
@@ -2196,7 +2197,6 @@
# but not other.
names = {}
- target_only = {}
wlock = repo.wlock()
try:
@@ -2204,8 +2204,6 @@
for src, abs, rel, exact in cmdutil.walk(repo, pats, opts,
badmatch=mf.has_key):
names[abs] = (rel, exact)
- if src == 'b':
- target_only[abs] = True
# walk target manifest.
@@ -2223,10 +2221,9 @@
if abs in names or src == 'b':
continue
names[abs] = (rel, exact)
- target_only[abs] = True
-
- changes = repo.status(match=names.has_key)[:5]
- modified, added, removed, deleted, unknown = map(dict.fromkeys, changes)
+
+ changes = repo.status(match=names.has_key)[:4]
+ modified, added, removed, deleted = map(dict.fromkeys, changes)
# if f is a rename, also revert the source
cwd = repo.getcwd()
@@ -2254,8 +2251,6 @@
(added, revert, forget, True, False),
(removed, undelete, None, False, False),
(deleted, revert, remove, False, False),
- (unknown, add, None, True, False),
- (target_only, add, None, False, False),
)
entries = names.items()
@@ -2282,10 +2277,14 @@
handle(hitlist, backuphit)
elif misslist is not None:
handle(misslist, backupmiss)
- else:
- if exact: ui.warn(_('file not managed: %s\n') % rel)
break
else:
+ if abs not in repo.dirstate:
+ if mfentry:
+ handle(add, True)
+ elif exact:
+ ui.warn(_('file not managed: %s\n') % rel)
+ continue
# file has not changed in dirstate
if node == parent:
if exact: ui.warn(_('no changes needed to %s\n') % rel)
@@ -2298,7 +2297,8 @@
if mfentry:
# if version of file is same in parent and target
# manifests, do nothing
- if pmf[abs] != mfentry:
+ if (pmf[abs] != mfentry or
+ pmf.flags(abs) != mf.flags(abs)):
handle(revert, False)
else:
handle(remove, False)