diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py --- a/hgext/largefiles/overrides.py +++ b/hgext/largefiles/overrides.py @@ -11,11 +11,10 @@ import os import copy -from mercurial import hg, commands, util, cmdutil, scmutil, match as match_, \ +from mercurial import hg, util, cmdutil, scmutil, match as match_, \ archival, pathutil, revset from mercurial.i18n import _ from mercurial.node import hex -from hgext import rebase import lfutil import lfcommands @@ -710,37 +709,14 @@ def overriderevert(orig, ui, repo, *pats finally: wlock.release() -# When we rebase a repository with remotely changed largefiles, we need to -# take some extra care so that the largefiles are correctly updated in the -# working copy +# after pulling changesets, we need to take some extra care to get +# largefiles updated remotely def overridepull(orig, ui, repo, source=None, **opts): revsprepull = len(repo) if not source: source = 'default' repo.lfpullsource = source - if opts.get('rebase', False): - repo._isrebasing = True - try: - if opts.get('update'): - del opts['update'] - ui.debug('--update and --rebase are not compatible, ignoring ' - 'the update flag\n') - del opts['rebase'] - origpostincoming = commands.postincoming - def _dummy(*args, **kwargs): - pass - commands.postincoming = _dummy - try: - result = commands.pull(ui, repo, source, **opts) - finally: - commands.postincoming = origpostincoming - revspostpull = len(repo) - if revspostpull > revsprepull: - result = result or rebase.rebase(ui, repo) - finally: - repo._isrebasing = False - else: - result = orig(ui, repo, source, **opts) + result = orig(ui, repo, source, **opts) revspostpull = len(repo) lfrevs = opts.get('lfrev', []) if opts.get('all_largefiles'): diff --git a/tests/test-largefiles-misc.t b/tests/test-largefiles-misc.t --- a/tests/test-largefiles-misc.t +++ b/tests/test-largefiles-misc.t @@ -832,4 +832,33 @@ locally (issue4109) $ cd .. +Test "pull --rebase" when rebase is enabled before largefiles (issue3861) +========================================================================= + $ hg showconfig extensions | grep largefiles + extensions.largefiles=! + + $ mkdir issue3861 + $ cd issue3861 + $ hg init src + $ hg clone -q src dst + $ echo a > src/a + $ hg -R src commit -Aqm "#0" + Invoking status precommit hook + A a + + $ cat >> dst/.hg/hgrc < [extensions] + > largefiles= + > EOF + $ hg -R dst pull --rebase + pulling from $TESTTMP/issue3861/src (glob) + requesting all changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + nothing to rebase - working directory parent is already an ancestor of destination bf5e395ced2c + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + + $ cd .. diff --git a/tests/test-largefiles.t b/tests/test-largefiles.t --- a/tests/test-largefiles.t +++ b/tests/test-largefiles.t @@ -1172,12 +1172,11 @@ rebased or not. adding manifests adding file changes added 1 changesets with 2 changes to 2 files (+1 heads) + 0 largefiles cached Invoking status precommit hook M sub/normal4 M sub2/large6 saved backup bundle to $TESTTMP/d/.hg/strip-backup/f574fb32bb45-backup.hg (glob) - 0 largefiles cached - nothing to rebase - working directory parent is also destination $ [ -f .hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 ] $ hg log --template '{rev}:{node|short} {desc|firstline}\n' 9:598410d3eb9a modify normal file largefile in repo d