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

[PATCH 05/13] revert: Eliminate global "commit" variable

From
Ramkumar Ramachandra <artagnon@gmail.com>
Date
Jun 21, 2011, 13:04 UTC
Message-ID
<1308661489-20080-6-git-send-email-artagnon@gmail.com>
In-Reply-To
<1308661489-20080-1-git-send-email-artagnon@gmail.com>

Since we want to develop the functionality to either pick or revert individual commits atomically later in the series, make "commit" a local variable. Doing this involves changing several functions to take an additional argument, but no other functional changes.

Helped-by: Jonathan Nieder <jrnieder@gmail.com>
Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
---
 builtin/revert.c |   24 ++++++++++++------------
 1 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/builtin/revert.c b/builtin/revert.c
index 26f39d1..1b04b3c 100644
--- a/builtin/revert.c
+++ b/builtin/revert.c
@@ -37,7 +37,6 @@ static const char * const cherry_pick_usage[] = {
 
 static int edit, no_replay, no_commit, mainline, signoff, allow_ff;
 static enum { REVERT, CHERRY_PICK } action;
-static struct commit *commit;
 static int commit_argc;
 static const char **commit_argv;
 static int allow_rerere_auto;
@@ -116,25 +115,25 @@ struct commit_message {
 	const char *message;
 };
 
-static int get_message(const char *raw_message, struct commit_message *out)
+static int get_message(struct commit *commit, struct commit_message *out)
 {
 	const char *encoding;
 	const char *abbrev, *subject;
 	int abbrev_len, subject_len;
 	char *q;
 
-	if (!raw_message)
+	if (!commit->buffer)
 		return -1;
-	encoding = get_encoding(raw_message);
+	encoding = get_encoding(commit->buffer);
 	if (!encoding)
 		encoding = "UTF-8";
 	if (!git_commit_encoding)
 		git_commit_encoding = "UTF-8";
 
 	out->reencoded_message = NULL;
-	out->message = raw_message;
+	out->message = commit->buffer;
 	if (strcmp(encoding, git_commit_encoding))
-		out->reencoded_message = reencode_string(raw_message,
+		out->reencoded_message = reencode_string(commit->buffer,
 					git_commit_encoding, encoding);
 	if (out->reencoded_message)
 		out->message = out->reencoded_message;
@@ -182,12 +181,12 @@ static char *get_encoding(const char *message)
 	return NULL;
 }
 
-static void write_cherry_pick_head(void)
+static void write_cherry_pick_head(const char *commit_sha1_hex)
 {
 	int fd;
 	struct strbuf buf = STRBUF_INIT;
 
-	strbuf_addf(&buf, "%s\n", sha1_to_hex(commit->object.sha1));
+	strbuf_addf(&buf, "%s\n", commit_sha1_hex);
 
 	fd = open(git_path("CHERRY_PICK_HEAD"), O_WRONLY | O_CREAT, 0666);
 	if (fd < 0)
@@ -354,7 +353,7 @@ static int run_git_commit(const char *defmsg)
 	return run_command_v_opt(args, RUN_GIT_CMD);
 }
 
-static int do_pick_commit(void)
+static int do_pick_commit(struct commit *commit)
 {
 	unsigned char head[20];
 	struct commit *base, *next, *parent;
@@ -416,7 +415,7 @@ static int do_pick_commit(void)
 		return error(_("%s: cannot parse parent commit %s"),
 			me, sha1_to_hex(parent->object.sha1));
 
-	if (get_message(commit->buffer, &msg) != 0)
+	if (get_message(commit, &msg) != 0)
 		return error(_("Cannot get commit message for %s"),
 			sha1_to_hex(commit->object.sha1));
 
@@ -462,7 +461,7 @@ static int do_pick_commit(void)
 			strbuf_addstr(&msgbuf, ")\n");
 		}
 		if (!no_commit)
-			write_cherry_pick_head();
+			write_cherry_pick_head(sha1_to_hex(commit->object.sha1));
 	}
 
 	if (!strategy || !strcmp(strategy, "recursive") || action == REVERT) {
@@ -540,6 +539,7 @@ static void read_and_refresh_cache(const char *me)
 static int revert_or_cherry_pick(int argc, const char **argv)
 {
 	struct rev_info revs;
+	struct commit *commit;
 
 	git_config(git_default_config, NULL);
 	me = action == REVERT ? "revert" : "cherry-pick";
@@ -562,7 +562,7 @@ static int revert_or_cherry_pick(int argc, const char **argv)
 	prepare_revs(&revs);
 
 	while ((commit = get_revision(&revs))) {
-		int res = do_pick_commit();
+		int res = do_pick_commit(commit);
 		if (res)
 			return res;
 	}
-- 
1.7.5.GIT
Previous: Ramkumar RamachandraNext: Jonathan Nieder
Message 18 of 47 in “Sequencer with continuation features”
  1. 00/13 Sequencer with continuation featuresRamkumar Ramachandra, Jun 21, 2011
  2. 01/13 advice: Introduce error_resolve_conflictRamkumar Ramachandra, Jun 21, 2011
  3. Jonathan NiederJun 21, 2011
  4. Junio C HamanoJun 21, 2011
  5. Ramkumar RamachandraJul 2, 2011
  6. Jonathan NiederJul 2, 2011
  7. 02/13 revert: Factor out add_message_to_msg functionRamkumar Ramachandra, Jun 21, 2011
  8. Jonathan NiederJun 21, 2011
  9. Junio C HamanoJun 21, 2011
  10. 03/13 revert: Don't check lone argument in get_encodingRamkumar Ramachandra, Jun 21, 2011
  11. Jonathan NiederJun 21, 2011
  12. 04/13 revert: Propogate errors upwards from do_pick_commitRamkumar Ramachandra, Jun 21, 2011
  13. Jonathan NiederJun 21, 2011
  14. Junio C HamanoJun 21, 2011
  15. Jonathan NiederJun 21, 2011
  16. Junio C HamanoJun 21, 2011
  17. Ramkumar RamachandraJul 2, 2011
  18. 05/13 revert: Eliminate global "commit" variableRamkumar Ramachandra, Jun 21, 2011
  19. Jonathan NiederJun 21, 2011
  20. Junio C HamanoJun 21, 2011
  21. 06/13 revert: Rename no_replay to record_originRamkumar Ramachandra, Jun 21, 2011
  22. 07/13 revert: Introduce struct to keep command-line optionsRamkumar Ramachandra, Jun 21, 2011
  23. Jonathan NiederJun 21, 2011
  24. Junio C HamanoJun 21, 2011
  25. 08/13 revert: Separate cmdline parsing from functional codeRamkumar Ramachandra, Jun 21, 2011
  26. Jonathan NiederJun 21, 2011
  27. 09/13 revert: Catch incompatible command-line options earlyRamkumar Ramachandra, Jun 21, 2011
  28. Jonathan NiederJun 21, 2011
  29. Ramkumar RamachandraJul 2, 2011
  30. Jonathan NiederJul 2, 2011
  31. Jonathan NiederJul 2, 2011
  32. Ramkumar RamachandraJul 2, 2011
  33. Jonathan NiederJul 2, 2011
  34. Jonathan NiederJul 2, 2011
  35. 10/13 revert: Persist data for continuationRamkumar Ramachandra, Jun 21, 2011
  36. Jonathan NiederJun 21, 2011
  37. Junio C HamanoJun 21, 2011
  38. 11/13 revert: Introduce a layer of indirection over pick_commitsRamkumar Ramachandra, Jun 21, 2011
  39. Junio C HamanoJun 21, 2011
  40. 12/13 revert: Introduce skip-all to cleanup sequencer dataRamkumar Ramachandra, Jun 21, 2011
  41. Junio C HamanoJun 21, 2011
  42. Ramkumar RamachandraJul 2, 2011
  43. Miles BaderJul 4, 2011
  44. Ramkumar RamachandraJul 5, 2011
  45. 13/13 revert: Introduce --continue to continue the operationRamkumar Ramachandra, Jun 21, 2011
  46. Jonathan NiederJun 21, 2011
  47. Jonathan NiederJun 21, 2011

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.