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

[PATCH 2/9] reset: refactor updating heads into a static function

From
Christian Couder <chriscool@tuxfamily.org>
Date
Feb 5, 2010, 23:11 UTC
Message-ID
<20100205231112.3689.95767.chriscool@tuxfamily.org>
In-Reply-To
<20100205231028.3689.12228.chriscool@tuxfamily.org>
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
 builtin-reset.c |   43 +++++++++++++++++++++++++++----------------
 1 files changed, 27 insertions(+), 16 deletions(-)
diff --git a/builtin-reset.c b/builtin-reset.c
index 0f5022e..3569695 100644
--- a/builtin-reset.c
+++ b/builtin-reset.c
@@ -211,15 +211,38 @@ static void prepend_reflog_action(const char *action, char *buf, size_t size)
 		warning("Reflog action message too long: %.*s...", 50, buf);
 }
 
+/*
+ * Any resets update HEAD to the head being switched to,
+ * saving the previous head in ORIG_HEAD before.
+ */
+static int update_heads(unsigned char *sha1)
+{
+	unsigned char sha1_orig[20], *orig = NULL,
+		sha1_old_orig[20], *old_orig = NULL;
+	char msg[1024];
+
+	if (!get_sha1("ORIG_HEAD", sha1_old_orig))
+		old_orig = sha1_old_orig;
+	if (!get_sha1("HEAD", sha1_orig)) {
+		orig = sha1_orig;
+		prepend_reflog_action("updating ORIG_HEAD", msg, sizeof(msg));
+		update_ref(msg, "ORIG_HEAD", orig, old_orig, 0, MSG_ON_ERR);
+	}
+	else if (old_orig)
+		delete_ref("ORIG_HEAD", old_orig, 0);
+	prepend_reflog_action("updating HEAD", msg, sizeof(msg));
+
+	return update_ref(msg, "HEAD", sha1, orig, 0, MSG_ON_ERR);
+}
+
 int cmd_reset(int argc, const char **argv, const char *prefix)
 {
 	int i = 0, reset_type = NONE, update_ref_status = 0, quiet = 0;
 	int patch_mode = 0;
 	const char *rev = "HEAD";
-	unsigned char sha1[20], *orig = NULL, sha1_orig[20],
-				*old_orig = NULL, sha1_old_orig[20];
+	unsigned char sha1[20];
 	struct commit *commit;
-	char *reflog_action, msg[1024];
+	char *reflog_action;
 	const struct option options[] = {
 		OPT__QUIET(&quiet),
 		OPT_SET_INT(0, "mixed", &reset_type,
@@ -321,19 +344,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
 	else if (reset_index_file(sha1, reset_type, quiet))
 		die("Could not reset index file to revision '%s'.", rev);
 
-	/* Any resets update HEAD to the head being switched to,
-	 * saving the previous head in ORIG_HEAD before. */
-	if (!get_sha1("ORIG_HEAD", sha1_old_orig))
-		old_orig = sha1_old_orig;
-	if (!get_sha1("HEAD", sha1_orig)) {
-		orig = sha1_orig;
-		prepend_reflog_action("updating ORIG_HEAD", msg, sizeof(msg));
-		update_ref(msg, "ORIG_HEAD", orig, old_orig, 0, MSG_ON_ERR);
-	}
-	else if (old_orig)
-		delete_ref("ORIG_HEAD", old_orig, 0);
-	prepend_reflog_action("updating HEAD", msg, sizeof(msg));
-	update_ref_status = update_ref(msg, "HEAD", sha1, orig, 0, MSG_ON_ERR);
+	update_ref_status = update_heads(sha1);
 
 	switch (reset_type) {
 	case HARD:
-- 
1.6.6.1.557.g77031
Previous: Christian CouderNext: Christian Couder
Message 3 of 20 in “add --ff option to cherry-pick”
  1. 0/9 add --ff option to cherry-pickChristian Couder, Feb 5, 2010
  2. 1/9 revert: libify cherry-pick and revert functionnalityChristian Couder, Feb 5, 2010
  3. 2/9 reset: refactor updating heads into a static functionChristian Couder, Feb 5, 2010
  4. 3/9 reset: refactor reseting in its own functionChristian Couder, Feb 5, 2010
  5. 4/9 reset: make reset function non static and declare it in "reset.h"Christian Couder, Feb 5, 2010
  6. 5/9 revert: add --ff option to allow fast forward when cherry-pickingChristian Couder, Feb 5, 2010
  7. Junio C HamanoFeb 5, 2010
  8. Junio C HamanoFeb 6, 2010
  9. Christian CouderFeb 28, 2010
  10. Paolo BonziniFeb 6, 2010
  11. Christian CouderFeb 6, 2010
  12. Paolo BonziniFeb 6, 2010
  13. 6/9 cherry-pick: add tests for new --ff optionChristian Couder, Feb 5, 2010
  14. 7/9 Documentation: describe new cherry-pick --ff optionChristian Couder, Feb 5, 2010
  15. 8/9 rebase -i: use new --ff cherry-pick optionChristian Couder, Feb 5, 2010
  16. 9/9 merge: use new "reset" function instead of running "git read-tree"Christian Couder, Feb 5, 2010
  17. Junio C HamanoFeb 6, 2010
  18. Christian CouderFeb 6, 2010
  19. Junio C HamanoFeb 5, 2010
  20. Christian CouderFeb 6, 2010

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.