diff options
Diffstat (limited to 'hgext/fetch.py')
-rw-r--r-- | hgext/fetch.py | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/hgext/fetch.py b/hgext/fetch.py index 491d8b2..23061cd 100644 --- a/hgext/fetch.py +++ b/hgext/fetch.py @@ -5,15 +5,13 @@ # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. -'''pull, update and merge in one command (DEPRECATED)''' +'''pull, update and merge in one command''' from mercurial.i18n import _ from mercurial.node import nullid, short from mercurial import commands, cmdutil, hg, util, error from mercurial.lock import release -testedwith = 'internal' - def fetch(ui, repo, source='default', **opts): '''pull changes from a remote repository, merge new changes if needed. @@ -25,9 +23,10 @@ def fetch(ui, repo, source='default', **opts): Otherwise, the working directory is updated to include the new changes. - When a merge is needed, the working directory is first updated to - the newly pulled changes. Local changes are then merged into the - pulled changes. To switch the merge order, use --switch-parent. + When a merge occurs, the newly pulled changes are assumed to be + "authoritative". The head of the new changes is used as the first + parent, with local changes as the second. To switch the merge + order, use --switch-parent. See :hg:`help dates` for a list of formats valid for -d/--date. @@ -40,10 +39,7 @@ def fetch(ui, repo, source='default', **opts): parent, p2 = repo.dirstate.parents() branch = repo.dirstate.branch() - try: - branchnode = repo.branchtip(branch) - except error.RepoLookupError: - branchnode = None + branchnode = repo.branchtags().get(branch) if parent != branchnode: raise util.Abort(_('working dir not at branch tip ' '(use "hg update" to check out branch tip)')) @@ -75,7 +71,7 @@ def fetch(ui, repo, source='default', **opts): try: revs = [other.lookup(rev) for rev in opts['rev']] except error.CapabilityError: - err = _("other repository doesn't support revision lookup, " + err = _("Other repository doesn't support revision lookup, " "so a rev cannot be specified.") raise util.Abort(err) @@ -87,9 +83,9 @@ def fetch(ui, repo, source='default', **opts): # Is this a simple fast-forward along the current branch? newheads = repo.branchheads(branch) newchildren = repo.changelog.nodesbetween([parent], newheads)[2] - if len(newheads) == 1 and len(newchildren): + if len(newheads) == 1: if newchildren[0] != parent: - return hg.update(repo, newchildren[0]) + return hg.clean(repo, newchildren[0]) else: return 0 @@ -106,9 +102,6 @@ def fetch(ui, repo, source='default', **opts): (len(newheads) - 1)) return 1 - if not newheads: - return 0 - # Otherwise, let's merge. err = False if newheads: |