--- a/hgext/fetch.py Mon Aug 07 22:35:36 2006 -0500
+++ b/hgext/fetch.py Mon Aug 07 22:54:33 2006 -0500
@@ -24,19 +24,19 @@
if modheads == 0:
return 0
if modheads == 1:
- return commands.doupdate(ui, repo)
+ return hg.update(repo, repo.changelog.tip())
newheads = repo.heads(parent)
newchildren = [n for n in repo.heads(parent) if n != parent]
newparent = parent
if newchildren:
- commands.doupdate(ui, repo, node=hex(newchildren[0]))
+ hg.update(repo, newchildren[0])
newparent = newchildren[0]
newheads = [n for n in repo.heads() if n != newparent]
err = False
if newheads:
ui.status(_('merging with new head %d:%s\n') %
(repo.changelog.rev(newheads[0]), short(newheads[0])))
- err = hg.update(repo, newheads[0], allow=True, remind=False)
+ err = hg.merge(repo, newheads[0], remind=False)
if not err and len(newheads) > 1:
ui.status(_('not merging with %d other new heads '
'(use "hg heads" and "hg merge" to merge them)') %
--- a/hgext/hbisect.py Mon Aug 07 22:35:36 2006 -0500
+++ b/hgext/hbisect.py Mon Aug 07 22:54:33 2006 -0500
@@ -197,7 +197,7 @@
check_clean(self.ui, self.repo)
rev = self.next()
if rev is not None:
- return hg.update(self.repo, rev, force=True)
+ return hg.clean(self.repo, rev)
def good(self, rev):
self.goodrevs.append(rev)
--- a/hgext/mq.py Mon Aug 07 22:35:36 2006 -0500
+++ b/hgext/mq.py Mon Aug 07 22:54:33 2006 -0500
@@ -190,11 +190,11 @@
self.ui.warn("patch didn't work out, merging %s\n" % patch)
# apply failed, strip away that rev and merge.
- hg.update(repo, head, allow=False, force=True, wlock=wlock)
+ hg.clean(repo, head, wlock=wlock)
self.strip(repo, n, update=False, backup='strip', wlock=wlock)
c = repo.changelog.read(rev)
- ret = hg.update(repo, rev, allow=True, wlock=wlock)
+ ret = hg.merge(repo, rev, wlock=wlock)
if ret:
raise util.Abort(_("update returned %d") % ret)
n = repo.commit(None, c[4], c[1], force=1, wlock=wlock)
@@ -530,7 +530,7 @@
if c or a or d or r:
raise util.Abort(_("local changes found"))
urev = self.qparents(repo, rev)
- hg.update(repo, urev, allow=False, force=True, wlock=wlock)
+ hg.clean(repo, urev, wlock=wlock)
repo.dirstate.write()
# save is a list of all the branches we are truncating away
@@ -1019,7 +1019,7 @@
if not r:
self.ui.warn("Unable to load queue repository\n")
return 1
- hg.update(r, qpp[0], allow=False, force=True)
+ hg.clean(r, qpp[0])
def save(self, repo, msg=None):
if len(self.applied) == 0:
--- a/mercurial/commands.py Mon Aug 07 22:35:36 2006 -0500
+++ b/mercurial/commands.py Mon Aug 07 22:54:33 2006 -0500
@@ -976,7 +976,7 @@
if opts['parent']:
raise util.Abort(_('cannot use --parent on non-merge changeset'))
parent = p1
- hg.update(repo, node, force=True, show_stats=False) # backout
+ hg.clean(repo, node, show_stats=False)
revert_opts = opts.copy()
revert_opts['rev'] = hex(parent)
revert(ui, repo, **revert_opts)
@@ -994,7 +994,7 @@
if opts['merge']:
ui.status(_('merging with changeset %s\n') % nice(op1))
n = _lookup(repo, hex(op1))
- hg.update(repo, n, allow=True) # merge
+ hg.merge(repo, n)
else:
ui.status(_('the backout changeset is a new head - '
'do not forget to merge\n'))
@@ -2163,7 +2163,7 @@
"""
node = _lookup(repo, node, branch)
- hg.update(repo, node, allow=True, forcemerge=force) # merge
+ return hg.merge(repo, node, force=force)
def outgoing(ui, repo, dest=None, **opts):
"""show changesets not found in destination
@@ -2606,8 +2606,7 @@
if not opts.get('dry_run'):
repo.dirstate.forget(forget[0])
- r = hg.update(repo, node, False, True, update.has_key, False,
- wlock=wlock, show_stats=False) # revert
+ r = hg.revert(repo, node, update.has_key)
repo.dirstate.update(add[0], 'a')
repo.dirstate.update(undelete[0], 'n')
repo.dirstate.update(remove[0], 'r')
@@ -2905,11 +2904,15 @@
By default, update will refuse to run if doing so would require
merging or discarding local changes.
"""
+ node = _lookup(repo, node, branch)
if merge:
ui.warn(_('(the -m/--merge option is deprecated; '
'use the merge command instead)\n'))
- node = _lookup(repo, node, branch)
- return hg.update(repo, node, allow=merge, force=clean, forcemerge=force)
+ return hg.merge(repo, node, force=force)
+ elif clean:
+ return hg.clean(repo, node)
+ else:
+ return hg.update(repo, node)
def _lookup(repo, node, branch=None):
if branch:
--- a/mercurial/hg.py Mon Aug 07 22:35:36 2006 -0500
+++ b/mercurial/hg.py Mon Aug 07 22:54:33 2006 -0500
@@ -10,7 +10,7 @@
from demandload import *
from i18n import gettext as _
demandload(globals(), "localrepo bundlerepo httprepo sshrepo statichttprepo")
-demandload(globals(), "errno lock os shutil util merge")
+demandload(globals(), "errno lock os shutil util merge@_merge")
def _local(path):
return (os.path.isfile(path and util.drop_scheme('file', path)) and
@@ -200,20 +200,30 @@
dest_lock.release()
if update:
- merge.update(dest_repo, dest_repo.changelog.tip())
+ _merge.update(dest_repo, dest_repo.changelog.tip())
if dir_cleanup:
dir_cleanup.close()
return src_repo, dest_repo
+def update(repo, node):
+ """update the working directory to node, merging linear changes"""
+ return _merge.update(repo, node)
-# This should instead be several functions with short arglists, like
-# update/merge/revert
+def clean(repo, node, wlock=None, show_stats=True):
+ """forcibly switch the working directory to node, clobbering changes"""
+ return _merge.update(repo, node, force=True, wlock=wlock,
+ show_stats=show_stats)
-def update(repo, node, allow=False, force=False, choose=None,
- moddirstate=True, forcemerge=False, wlock=None, show_stats=True):
- return merge.update(repo, node, allow, force, choose, moddirstate,
- forcemerge, wlock, show_stats)
+def merge(repo, node, force=None, remind=True, wlock=None):
+ """branch merge with node, resolving changes"""
+ return _merge.update(repo, node, allow=True, forcemerge=force,
+ remind=remind, wlock=wlock)
+
+def revert(repo, node, choose):
+ """revert changes to revision in node without updating dirstate"""
+ return _merge.update(repo, node, force=True, choose=choose,
+ moddirstate=False, show_stats=False)
def verify(repo):
"""verify the consistency of a repository"""
--- a/tests/test-up-local-change.out Mon Aug 07 22:35:36 2006 -0500
+++ b/tests/test-up-local-change.out Mon Aug 07 22:54:33 2006 -0500
@@ -17,7 +17,7 @@
summary: 1
resolving manifests
- force None allow None moddirstate True linear True
+ force False allow False moddirstate True linear True
ancestor a0c8bcbbb45c local a0c8bcbbb45c remote 1165e8bd193e
a versions differ, resolve
remote created b
@@ -33,7 +33,7 @@
summary: 2
resolving manifests
- force None allow None moddirstate True linear True
+ force False allow False moddirstate True linear True
ancestor a0c8bcbbb45c local 1165e8bd193e remote a0c8bcbbb45c
remote deleted b
removing b
@@ -51,7 +51,7 @@
summary: 1
resolving manifests
- force None allow None moddirstate True linear True
+ force False allow False moddirstate True linear True
ancestor a0c8bcbbb45c local a0c8bcbbb45c remote 1165e8bd193e
a versions differ, resolve
remote created b
@@ -99,7 +99,7 @@
summary: 2
resolving manifests
- force None allow None moddirstate True linear False
+ force False allow False moddirstate True linear False
ancestor a0c8bcbbb45c local 1165e8bd193e remote 4096f2872392
a versions differ, resolve
b versions differ, resolve
--- a/tests/test-update-reverse.out Mon Aug 07 22:35:36 2006 -0500
+++ b/tests/test-update-reverse.out Mon Aug 07 22:54:33 2006 -0500
@@ -40,7 +40,7 @@
side1
side2
resolving manifests
- force 1 allow None moddirstate True linear False
+ force True allow False moddirstate True linear False
ancestor 8515d4bfda76 local 1c0f48f8ece6 remote 0594b9004bae
remote deleted side2, clobbering
remote deleted side1, clobbering