git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 1/2] sequencer.c: make commit_post_rewrite() take two object names

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 12, 2021, 03:01 UTC
Message-ID
<20210312030107.1849942-2-gitster@pobox.com>
In-Reply-To
<20210312030107.1849942-1-gitster@pobox.com>

The helper function is to copy notes between two commits by taking the original one and a new one that is supposed to be a rewrite of the original one. It somehow takes "struct commit *" for the former but "struct object_id *" for the latter, but what it does does not need access to the in-core commit object.

Change the function to take two "struct object_id *" instead.

As we require "struct object_id *" for the original commit now, the comment on the old "struct commit *" that must be non-NULL which made taking the address of its object.oid member safe no longer is relevant to this function (it is the caller's concern now), so remove it. Two callers we have are of course safe, and there is no reason to call this "as we rewrote A to B, please copy notes on A to B, too" helper if the caller knows A is NULL, so the comment would have very little value even if it were kept.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 builtin/commit.c | 6 +++---
 sequencer.c      | 9 ++++-----
 sequencer.h      | 2 +-
 3 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/builtin/commit.c b/builtin/commit.c
index 739110c5a7..f2fbef053e 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -1702,9 +1702,9 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
 	repo_rerere(the_repository, 0);
 	run_auto_maintenance(quiet);
 	run_commit_hook(use_editor, get_index_file(), "post-commit", NULL);
-	if (amend && !no_post_rewrite) {
-		commit_post_rewrite(the_repository, current_head, &oid);
-	}
+	if (amend && !no_post_rewrite)
+		commit_post_rewrite(the_repository, &current_head->object.oid, &oid);
+
 	if (!quiet) {
 		unsigned int flags = 0;
 
diff --git a/sequencer.c b/sequencer.c
index d2332d3e17..92a4871997 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -1175,18 +1175,17 @@ static int run_rewrite_hook(const struct object_id *oldoid,
 }
 
 void commit_post_rewrite(struct repository *r,
-			 const struct commit *old_head,
+			 const struct object_id *old_head,
 			 const struct object_id *new_head)
 {
 	struct notes_rewrite_cfg *cfg;
 
 	cfg = init_copy_notes_for_rewrite("amend");
 	if (cfg) {
-		/* we are amending, so old_head is not NULL */
-		copy_note_for_rewrite(cfg, &old_head->object.oid, new_head);
+		copy_note_for_rewrite(cfg, old_head, new_head);
 		finish_copy_notes_for_rewrite(r, cfg, "Notes added by 'git commit --amend'");
 	}
-	run_rewrite_hook(&old_head->object.oid, new_head);
+	run_rewrite_hook(old_head, new_head);
 }
 
 static int run_prepare_commit_msg_hook(struct repository *r,
@@ -1538,7 +1537,7 @@ static int try_to_commit(struct repository *r,
 
 	run_commit_hook(0, r->index_file, "post-commit", NULL);
 	if (flags & AMEND_MSG)
-		commit_post_rewrite(r, current_head, oid);
+		commit_post_rewrite(r, &current_head->object.oid, oid);
 
 out:
 	free_commit_extra_headers(extra);
diff --git a/sequencer.h b/sequencer.h
index f8b2e4ab85..79eed55c4b 100644
--- a/sequencer.h
+++ b/sequencer.h
@@ -192,7 +192,7 @@ int update_head_with_reflog(const struct commit *old_head,
 			    const char *action, const struct strbuf *msg,
 			    struct strbuf *err);
 void commit_post_rewrite(struct repository *r,
-			 const struct commit *current_head,
+			 const struct object_id *old_head,
 			 const struct object_id *new_head);
 
 void create_autostash(struct repository *r, const char *path,
-- 
2.31.0-rc2-175-g3820f1c72e
Previous: Junio C HamanoNext: Junio C Hamano
Message 3 of 8 in “[BUG] cmd given to "rebase -x cmd" cannot see the original HEAD?”
  1. Junio C HamanoMar 11, 2021
  2. 0/2 "rebase -x cmd" loses notesJunio C Hamano, Mar 12, 2021
  3. 1/2 sequencer.c: make commit_post_rewrite() take two object namesJunio C Hamano, Mar 12, 2021
  4. 2/2 [WIP] sequencer.c: carry forward notes on HEAD across "rebase -x"Junio C Hamano, Mar 12, 2021
  5. Phillip WoodMar 12, 2021
  6. Ævar Arnfjörð BjarmasonMar 12, 2021
  7. Phillip WoodMar 12, 2021
  8. [WIP][PATCH] rebase: update the list of rewritten commits when amending pickPhillip Wood, Mar 12, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.