Re: [PATCH 1/1] pull --rebase=<type>: allow single-letter abbreviations for the type
From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2018-08-07 19:28:47
On Sat, Aug 04 2018, Johannes Schindelin via GitGitGadget wrote:
From: Johannes Schindelin <redacted> 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.
quoted hunk ↗ jump to hunk
Signed-off-by: Johannes Schindelin <redacted> --- 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...
quoted hunk ↗ jump to hunk
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.