Re: [PATCH v4] pull: allow dirty tree when rebase.autostash enabled
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jul 6, 2015, 20:39 UTC
- Message-ID
- <xmqqd205yq98.fsf@gitster.dls.corp.google.com>
- In-Reply-To
- <1436046158-19426-1-git-send-email-me@ikke.info>
Kevin Daudt <me@ikke.info> writes:
Show 9 quoted lines
> rebase learned to stash changes when it encounters a dirty work tree, but > git pull --rebase does not. > > Only verify if the working tree is dirty when rebase.autostash is not > enabled. > > Signed-off-by: Kevin Daudt <me@ikke.info> > Helped-by: Paul Tan <pyokagan@gmail.com> > ---
I applied it, tried to run today's integration cycle, and then ended up ejecting it from my tree for now, as this seemed to break 5520 when merged to 'pu' X-<.
Well, that is partly expected, as Paul's builtin/pull.c does not know about it (yet).
Show 40 quoted lines
> git-pull.sh | 3 ++-
> t/t5520-pull.sh | 11 +++++++++++
> 2 files changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/git-pull.sh b/git-pull.sh
> index a814bf6..ff28d3f 100755
> --- a/git-pull.sh
> +++ b/git-pull.sh
> @@ -284,7 +284,8 @@ test true = "$rebase" && {
> then
> die "$(gettext "updating an unborn branch with changes added to the index")"
> fi
> - else
> + elif test $(git config --bool --get rebase.autostash || echo false) = false
> + then
> require_clean_work_tree "pull with rebase" "Please commit or stash them."
> fi
> oldremoteref= &&
> diff --git a/t/t5520-pull.sh b/t/t5520-pull.sh
> index f4a7193..a0013ee 100755
> --- a/t/t5520-pull.sh
> +++ b/t/t5520-pull.sh
> @@ -245,6 +245,17 @@ test_expect_success '--rebase fails with multiple branches' '
> test modified = "$(git show HEAD:file)"
> '
>
> +test_expect_success 'pull --rebase succeeds with dirty working directory and rebase.autostash set' '
> + test_config rebase.autostash true &&
> + git reset --hard before-rebase &&
> + echo dirty >new_file &&
> + git add new_file &&
> + git pull --rebase . copy &&
> + test_cmp_rev HEAD^ copy &&
> + test "$(cat new_file)" = dirty &&
> + test "$(cat file)" = "modified again"
> +'
> +
> test_expect_success 'pull.rebase' '
> git reset --hard before-rebase &&
> test_config pull.rebase true &&