diff options
-rw-r--r-- | git-rebase--interactive.sh | 2 | ||||
-rw-r--r-- | sequencer.c | 2 | ||||
-rwxr-xr-x | t/t3430-rebase-merges.sh | 17 |
3 files changed, 19 insertions, 2 deletions
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index 0c92ac00fa..06a7b79307 100644 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -162,7 +162,7 @@ r, reword <commit> = use commit, but edit the commit message e, edit <commit> = use commit, but stop for amending s, squash <commit> = use commit, but meld into previous commit f, fixup <commit> = like \"squash\", but discard this commit's log message -x, exec <commit> = run command (the rest of the line) using shell +x, exec <command> = run command (the rest of the line) using shell d, drop <commit> = remove commit l, label <label> = label current HEAD with a name t, reset <label> = reset HEAD to a label diff --git a/sequencer.c b/sequencer.c index 560fc9b67d..cca968043e 100644 --- a/sequencer.c +++ b/sequencer.c @@ -3792,7 +3792,7 @@ static const char *label_oid(struct object_id *oid, const char *label, p[i] = save; } } - } else if (((len = strlen(label)) == GIT_SHA1_RAWSZ && + } else if (((len = strlen(label)) == the_hash_algo->hexsz && !get_oid_hex(label, &dummy)) || (len == 1 && *label == '#') || hashmap_get_from_hash(&state->labels, diff --git a/t/t3430-rebase-merges.sh b/t/t3430-rebase-merges.sh index ce6de6f491..2608e5483d 100755 --- a/t/t3430-rebase-merges.sh +++ b/t/t3430-rebase-merges.sh @@ -70,6 +70,7 @@ test_expect_success 'create completely different structure' ' merge -C H second merge onebranch # Merge the topic branch '\''onebranch'\'' EOF + cp script-from-scratch script-from-scratch-orig && test_config sequence.editor \""$PWD"/replace-editor.sh\" && test_tick && git rebase -i -r A && @@ -313,4 +314,20 @@ test_expect_success 'A root commit can be a cousin, treat it that way' ' EOF ' +test_expect_success 'labels that are object IDs are rewritten' ' + git checkout -b third B && + test_tick && + test_commit I && + third=$(git rev-parse HEAD) && + git checkout -b labels master && + git merge --no-commit third && + test_tick && + git commit -m "Merge commit '\''$third'\'' into labels" && + cp script-from-scratch-orig script-from-scratch && + test_config sequence.editor \""$PWD"/replace-editor.sh\" && + test_tick && + git rebase -i -r A && + ! grep "^label $third$" .git/ORIGINAL-TODO +' + test_done |