summaryrefslogtreecommitdiff
path: root/sequencer.c
diff options
context:
space:
mode:
authorDerrick Stolee <derrickstolee@github.com>2022-07-19 18:33:43 (GMT)
committerJunio C Hamano <gitster@pobox.com>2022-07-19 19:49:04 (GMT)
commitaa37f3e1d892698276b52f347c6374499f6c0759 (patch)
tree0fd58af5f692f2b5e8167a18ed874dd004cf8fc8 /sequencer.c
parent3113fedaeb67eed4c46ef7bdd670b8406317a303 (diff)
downloadgit-aa37f3e1d892698276b52f347c6374499f6c0759.zip
git-aa37f3e1d892698276b52f347c6374499f6c0759.tar.gz
git-aa37f3e1d892698276b52f347c6374499f6c0759.tar.bz2
sequencer: ignore HEAD ref under --update-refs
When using the 'git rebase -i --update-refs' option, the todo list is populated with 'update-ref' commands for all tip refs in the history that is being rebased. Refs that are checked out by some worktree are instead added as a comment to warn the user that they will not be updated. Until now, this included the HEAD ref, which is being updated by the rebase process itself, regardless of the --update-refs option. Remove the comment in this case by ignoring any decorations that match the HEAD ref. Reported-by: Elijah Newren <newren@gmail.com> Signed-off-by: Derrick Stolee <derrickstolee@github.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'sequencer.c')
-rw-r--r--sequencer.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/sequencer.c b/sequencer.c
index 20ca7b4..f85aa6b 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -5888,12 +5888,25 @@ static int add_decorations_to_list(const struct commit *commit,
struct todo_add_branch_context *ctx)
{
const struct name_decoration *decoration = get_name_decoration(&commit->object);
+ const char *head_ref = resolve_ref_unsafe("HEAD",
+ RESOLVE_REF_READING,
+ NULL,
+ NULL);
while (decoration) {
struct todo_item *item;
const char *path;
size_t base_offset = ctx->buf->len;
+ /*
+ * If the branch is the current HEAD, then it will be
+ * updated by the default rebase behavior.
+ */
+ if (head_ref && !strcmp(head_ref, decoration->name)) {
+ decoration = decoration->next;
+ continue;
+ }
+
ALLOC_GROW(ctx->items,
ctx->items_nr + 1,
ctx->items_alloc);