git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/1] Support git pull --rebase=i <remote> <branch>
@ 2018-08-04 19:23 Johannes Schindelin via GitGitGadget
  2018-08-04 19:23 ` [PATCH 1/1] pull --rebase=<type>: allow single-letter abbreviations for the type Johannes Schindelin via GitGitGadget
  0 siblings, 1 reply; 7+ messages in thread
From: Johannes Schindelin via GitGitGadget @ 2018-08-04 19:23 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano

The patch [https://github.com/git-for-windows/git/commit/4aa8b8c82] that
introduced support for pull --rebase=<type> into the Git for Windows project
still allowed the very convenient abbreviation

git pull --rebase=i

which was later lost when it was ported to the builtin git pull, and it was
not introduced before the patch eventually made it into Git as f5eb87b98dd
(pull: allow interactive rebase with --rebase=interactive, 2016-01-13).

However, it is really a useful short hand for the occasional rebasing pull
on branches that do not usually want to be rebased.

So let's reintroduce this convenience, at long last.

Johannes Schindelin (1):
  pull --rebase=<type>: allow single-letter abbreviations for the type

 builtin/pull.c  |  6 +++---
 t/t5520-pull.sh | 12 ++++++++++++
 2 files changed, 15 insertions(+), 3 deletions(-)


base-commit: 1d89318c48d233d52f1db230cf622935ac3c69fa
Published-As: https://github.com/gitgitgadget/git/releases/tags/pr-14%2Fdscho%2Fpull-rebase-i-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-14/dscho/pull-rebase-i-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/14
-- 
gitgitgadget

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/1] pull --rebase=<type>: allow single-letter abbreviations for the type
  2018-08-04 19:23 [PATCH 0/1] Support git pull --rebase=i <remote> <branch> Johannes Schindelin via GitGitGadget
@ 2018-08-04 19:23 ` Johannes Schindelin via GitGitGadget
  2018-08-06 19:59   ` Junio C Hamano
  2018-08-07 19:28   ` Ævar Arnfjörð Bjarmason
  0 siblings, 2 replies; 7+ messages in thread
From: Johannes Schindelin via GitGitGadget @ 2018-08-04 19:23 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Johannes Schindelin

From: Johannes Schindelin <johannes.schindelin@gmx.de>

Git for Windows' original 4aa8b8c8283 (Teach 'git pull' to handle
--rebase=interactive, 2011-10-21) had support for the very convenient
abbreviation

	git pull --rebase=i

which was later lost when it was ported to the builtin `git pull`, and
it was not introduced before the patch eventually made it into Git as
f5eb87b98dd (pull: allow interactive rebase with --rebase=interactive,
2016-01-13).

However, it is *really* a useful short hand for the occasional rebasing
pull on branches that do not usually want to be rebased.

So let's reintroduce this convenience, at long last.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 builtin/pull.c  |  6 +++---
 t/t5520-pull.sh | 12 ++++++++++++
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/builtin/pull.c b/builtin/pull.c
index 4e7893539..53bc5facf 100644
--- a/builtin/pull.c
+++ b/builtin/pull.c
@@ -48,11 +48,11 @@ static enum rebase_type parse_config_rebase(const char *key, const char *value,
 		return REBASE_FALSE;
 	else if (v > 0)
 		return REBASE_TRUE;
-	else if (!strcmp(value, "preserve"))
+	else if (!strcmp(value, "preserve") || !strcmp(value, "p"))
 		return REBASE_PRESERVE;
-	else if (!strcmp(value, "merges"))
+	else if (!strcmp(value, "merges") || !strcmp(value, "m"))
 		return REBASE_MERGES;
-	else if (!strcmp(value, "interactive"))
+	else if (!strcmp(value, "interactive") || !strcmp(value, "i"))
 		return REBASE_INTERACTIVE;
 
 	if (fatal)
diff --git a/t/t5520-pull.sh b/t/t5520-pull.sh
index 68aa5f034..5e501c8b0 100755
--- a/t/t5520-pull.sh
+++ b/t/t5520-pull.sh
@@ -475,10 +475,22 @@ test_expect_success 'pull.rebase=interactive' '
 	false
 	EOF
 	test_set_editor "$TRASH_DIRECTORY/fake-editor" &&
+	test_when_finished "test_might_fail git rebase --abort" &&
 	test_must_fail git pull --rebase=interactive . copy &&
 	test "I was here" = "$(cat fake.out)"
 '
 
+test_expect_success 'pull --rebase=i' '
+	write_script "$TRASH_DIRECTORY/fake-editor" <<-\EOF &&
+	echo I was here, too >fake.out &&
+	false
+	EOF
+	test_set_editor "$TRASH_DIRECTORY/fake-editor" &&
+	test_when_finished "test_might_fail git rebase --abort" &&
+	test_must_fail git pull --rebase=i . copy &&
+	test "I was here, too" = "$(cat fake.out)"
+'
+
 test_expect_success 'pull.rebase=invalid fails' '
 	git reset --hard before-preserve-rebase &&
 	test_config pull.rebase invalid &&
-- 
gitgitgadget

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/1] pull --rebase=<type>: allow single-letter abbreviations for the type
  2018-08-04 19:23 ` [PATCH 1/1] pull --rebase=<type>: allow single-letter abbreviations for the type Johannes Schindelin via GitGitGadget
@ 2018-08-06 19:59   ` Junio C Hamano
  2018-08-07 12:02     ` Johannes Schindelin
  2018-08-07 19:28   ` Ævar Arnfjörð Bjarmason
  1 sibling, 1 reply; 7+ messages in thread
From: Junio C Hamano @ 2018-08-06 19:59 UTC (permalink / raw)
  To: Johannes Schindelin via GitGitGadget; +Cc: git, Johannes Schindelin

"Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
writes:

> From: Johannes Schindelin <johannes.schindelin@gmx.de>
>
> Git for Windows' original 4aa8b8c8283 (Teach 'git pull' to handle
> --rebase=interactive, 2011-10-21) had support for the very convenient
> abbreviation
>
> 	git pull --rebase=i
>
> which was later lost when it was ported to the builtin `git pull`, and
> it was not introduced before the patch eventually made it into Git as
> f5eb87b98dd (pull: allow interactive rebase with --rebase=interactive,
> 2016-01-13).
>
> However, it is *really* a useful short hand for the occasional rebasing
> pull on branches that do not usually want to be rebased.
>
> So let's reintroduce this convenience, at long last.
>
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---

Makes sense, whether this patch is adding back what in the past
existed only in the Windows port but lost, and whether the lossage
was long time ago or in just a few releases go, or it is adding a
complete new feature for that matter.  This looks like a good
short-hand.

Will queue.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/1] pull --rebase=<type>: allow single-letter abbreviations for the type
  2018-08-06 19:59   ` Junio C Hamano
@ 2018-08-07 12:02     ` Johannes Schindelin
  0 siblings, 0 replies; 7+ messages in thread
From: Johannes Schindelin @ 2018-08-07 12:02 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Johannes Schindelin via GitGitGadget, git

Hi Junio,

On Mon, 6 Aug 2018, Junio C Hamano wrote:

> "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
> writes:
> 
> > From: Johannes Schindelin <johannes.schindelin@gmx.de>
> >
> > Git for Windows' original 4aa8b8c8283 (Teach 'git pull' to handle
> > --rebase=interactive, 2011-10-21) had support for the very convenient
> > abbreviation
> >
> > 	git pull --rebase=i
> >
> > which was later lost when it was ported to the builtin `git pull`, and
> > it was not introduced before the patch eventually made it into Git as
> > f5eb87b98dd (pull: allow interactive rebase with --rebase=interactive,
> > 2016-01-13).
> >
> > However, it is *really* a useful short hand for the occasional rebasing
> > pull on branches that do not usually want to be rebased.
> >
> > So let's reintroduce this convenience, at long last.
> >
> > Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> > ---
> 
> Makes sense, whether this patch is adding back what in the past
> existed only in the Windows port but lost, and whether the lossage
> was long time ago or in just a few releases go, or it is adding a
> complete new feature for that matter.  This looks like a good
> short-hand.
> 
> Will queue.

Thanks!
Dscho

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/1] pull --rebase=<type>: allow single-letter abbreviations for the type
  2018-08-04 19:23 ` [PATCH 1/1] pull --rebase=<type>: allow single-letter abbreviations for the type Johannes Schindelin via GitGitGadget
  2018-08-06 19:59   ` Junio C Hamano
@ 2018-08-07 19:28   ` Ævar Arnfjörð Bjarmason
  2018-08-08 19:51     ` Junio C Hamano
  1 sibling, 1 reply; 7+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2018-08-07 19:28 UTC (permalink / raw)
  To: Johannes Schindelin via GitGitGadget
  Cc: git, Junio C Hamano, Johannes Schindelin


On Sat, Aug 04 2018, Johannes Schindelin via GitGitGadget wrote:

> From: Johannes Schindelin <johannes.schindelin@gmx.de>
>
> Git for Windows' original 4aa8b8c8283 (Teach 'git pull' to handle
> --rebase=interactive, 2011-10-21) had support for the very convenient
> abbreviation
>
> 	git pull --rebase=i
>
> which was later lost when it was ported to the builtin `git pull`, and
> it was not introduced before the patch eventually made it into Git as
> f5eb87b98dd (pull: allow interactive rebase with --rebase=interactive,
> 2016-01-13).
>
> However, it is *really* a useful short hand for the occasional rebasing
> pull on branches that do not usually want to be rebased.
>
> So let's reintroduce this convenience, at long last.

I agree with the shorthand, but I really think this should be
documented. The amount of people who'll discover this by reading the
code is much smaller than those who might discover it via the docs.

> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
>  builtin/pull.c  |  6 +++---
>  t/t5520-pull.sh | 12 ++++++++++++
>  2 files changed, 15 insertions(+), 3 deletions(-)
>
> diff --git a/builtin/pull.c b/builtin/pull.c
> index 4e7893539..53bc5facf 100644
> --- a/builtin/pull.c
> +++ b/builtin/pull.c
> @@ -48,11 +48,11 @@ static enum rebase_type parse_config_rebase(const char *key, const char *value,
>  		return REBASE_FALSE;
>  	else if (v > 0)
>  		return REBASE_TRUE;
> -	else if (!strcmp(value, "preserve"))
> +	else if (!strcmp(value, "preserve") || !strcmp(value, "p"))
>  		return REBASE_PRESERVE;
> -	else if (!strcmp(value, "merges"))
> +	else if (!strcmp(value, "merges") || !strcmp(value, "m"))
>  		return REBASE_MERGES;
> -	else if (!strcmp(value, "interactive"))
> +	else if (!strcmp(value, "interactive") || !strcmp(value, "i"))
>  		return REBASE_INTERACTIVE;

Here 3 special cases are added...

>  	if (fatal)
> diff --git a/t/t5520-pull.sh b/t/t5520-pull.sh
> index 68aa5f034..5e501c8b0 100755
> --- a/t/t5520-pull.sh
> +++ b/t/t5520-pull.sh
> @@ -475,10 +475,22 @@ test_expect_success 'pull.rebase=interactive' '
>  	false
>  	EOF
>  	test_set_editor "$TRASH_DIRECTORY/fake-editor" &&
> +	test_when_finished "test_might_fail git rebase --abort" &&
>  	test_must_fail git pull --rebase=interactive . copy &&
>  	test "I was here" = "$(cat fake.out)"
>  '
>
> +test_expect_success 'pull --rebase=i' '
> +	write_script "$TRASH_DIRECTORY/fake-editor" <<-\EOF &&
> +	echo I was here, too >fake.out &&
> +	false
> +	EOF
> +	test_set_editor "$TRASH_DIRECTORY/fake-editor" &&
> +	test_when_finished "test_might_fail git rebase --abort" &&
> +	test_must_fail git pull --rebase=i . copy &&
> +	test "I was here, too" = "$(cat fake.out)"
> +'
> +
>  test_expect_success 'pull.rebase=invalid fails' '
>  	git reset --hard before-preserve-rebase &&
>  	test_config pull.rebase invalid &&

...but this test is only for 1/3. I haven't run this, but it looks like
the tests will still pass if we remove --rebase=p and --rebase=m.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/1] pull --rebase=<type>: allow single-letter abbreviations for the type
  2018-08-07 19:28   ` Ævar Arnfjörð Bjarmason
@ 2018-08-08 19:51     ` Junio C Hamano
  2018-08-08 22:19       ` Junio C Hamano
  0 siblings, 1 reply; 7+ messages in thread
From: Junio C Hamano @ 2018-08-08 19:51 UTC (permalink / raw)
  To: Ævar Arnfjörð Bjarmason
  Cc: Johannes Schindelin via GitGitGadget, git, Johannes Schindelin

Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:

>> -	else if (!strcmp(value, "preserve"))
>> +	else if (!strcmp(value, "preserve") || !strcmp(value, "p"))
>>  		return REBASE_PRESERVE;
>> -	else if (!strcmp(value, "merges"))
>> +	else if (!strcmp(value, "merges") || !strcmp(value, "m"))
>>  		return REBASE_MERGES;
>> -	else if (!strcmp(value, "interactive"))
>> +	else if (!strcmp(value, "interactive") || !strcmp(value, "i"))
>>  		return REBASE_INTERACTIVE;
>
> Here 3 special cases are added...
> ...
>> +test_expect_success 'pull --rebase=i' '
>> ...
>> +'
>> +
>>  test_expect_success 'pull.rebase=invalid fails' '
>>  	git reset --hard before-preserve-rebase &&
>>  	test_config pull.rebase invalid &&
>
> ...but this test is only for 1/3. I haven't run this, but it looks like
> the tests will still pass if we remove --rebase=p and --rebase=m.

Good eyes.  It's not like that parsing these three is implemented
with one thing; in other words, it is not hard to break one without
breaking the other two.





^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/1] pull --rebase=<type>: allow single-letter abbreviations for the type
  2018-08-08 19:51     ` Junio C Hamano
@ 2018-08-08 22:19       ` Junio C Hamano
  0 siblings, 0 replies; 7+ messages in thread
From: Junio C Hamano @ 2018-08-08 22:19 UTC (permalink / raw)
  To: Ævar Arnfjörð Bjarmason
  Cc: Johannes Schindelin via GitGitGadget, git, Johannes Schindelin

Junio C Hamano <gitster@pobox.com> writes:

> Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
>
>>> -	else if (!strcmp(value, "preserve"))
>>> +	else if (!strcmp(value, "preserve") || !strcmp(value, "p"))
>>>  		return REBASE_PRESERVE;
>>> -	else if (!strcmp(value, "merges"))
>>> +	else if (!strcmp(value, "merges") || !strcmp(value, "m"))
>>>  		return REBASE_MERGES;
>>> -	else if (!strcmp(value, "interactive"))
>>> +	else if (!strcmp(value, "interactive") || !strcmp(value, "i"))
>>>  		return REBASE_INTERACTIVE;
>>
>> Here 3 special cases are added...
>> ...
>>> +test_expect_success 'pull --rebase=i' '
>>> ...
>>> +'
>>> +
>>>  test_expect_success 'pull.rebase=invalid fails' '
>>>  	git reset --hard before-preserve-rebase &&
>>>  	test_config pull.rebase invalid &&
>>
>> ...but this test is only for 1/3. I haven't run this, but it looks like
>> the tests will still pass if we remove --rebase=p and --rebase=m.
>
> Good eyes.  It's not like that parsing these three is implemented
> with one thing; in other words, it is not hard to break one without
> breaking the other two.

Having said that, that can be done as a follow-up "oops, the
original was sloppy" patch.  It's not as bad compared to "oops, the
original was totally borked and here is a fix", so I am OK with that
;-)

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2018-08-08 22:19 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-04 19:23 [PATCH 0/1] Support git pull --rebase=i <remote> <branch> Johannes Schindelin via GitGitGadget
2018-08-04 19:23 ` [PATCH 1/1] pull --rebase=<type>: allow single-letter abbreviations for the type Johannes Schindelin via GitGitGadget
2018-08-06 19:59   ` Junio C Hamano
2018-08-07 12:02     ` Johannes Schindelin
2018-08-07 19:28   ` Ævar Arnfjörð Bjarmason
2018-08-08 19:51     ` Junio C Hamano
2018-08-08 22:19       ` Junio C Hamano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).