From patchwork Thu Jan 5 08:21:07 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [V3] rebase: fail-fast the pull if working dir is not clean (BC) From: Valters Vingolds X-Patchwork-Id: 18100 Message-Id: To: mercurial-devel@mercurial-scm.org Date: Thu, 05 Jan 2017 09:21:07 +0100 # HG changeset patch # User Valters Vingolds # Date 1483272989 -3600 # Sun Jan 01 13:16:29 2017 +0100 # Node ID e34ac9f0b311708613ae5d18b5791768a90e3582 # Parent 0064a1eb28e246ded9b726c696d048143d1b23f1 rebase: fail-fast the pull if working dir is not clean (BC) Refuse to run 'hg pull --rebase' if there are uncommitted changes: so that instead of going ahead with fetching changes and then suddenly aborting the rebase, we can warn user of uncommitted changes (or unclean repo state) right up front. diff --git a/hgext/rebase.py b/hgext/rebase.py --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -1316,6 +1316,10 @@ ui.debug('--update and --rebase are not compatible, ignoring ' 'the update flag\n') + ui.debug('before rebase: ensure working dir is clean\n') + cmdutil.checkunfinished(repo) + cmdutil.bailifchanged(repo) + revsprepull = len(repo) origpostincoming = commands.postincoming def _dummy(*args, **kwargs): diff --git a/tests/test-rebase-pull.t b/tests/test-rebase-pull.t --- a/tests/test-rebase-pull.t +++ b/tests/test-rebase-pull.t @@ -72,6 +72,19 @@ searching for changes no changes found +Abort pull early if working dir is not clean: + + $ echo L1-mod > L1 + $ hg pull --rebase + abort: uncommitted changes + [255] + $ hg update --clean --quiet + $ touch .hg/rebasestate # make rebase think there's one in progress right now + $ hg pull --rebase + abort: rebase in progress + (use 'hg rebase --continue' or 'hg rebase --abort') + [255] + $ rm .hg/rebasestate Invoke pull --rebase and nothing to rebase: