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

[PATCH v3 3/4] format-patch: refactor branch name calculation

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Apr 7, 2013, 07:10 UTC
Message-ID
<1365318630-11882-4-git-send-email-felipe.contreras@gmail.com>
In-Reply-To
<1365318630-11882-1-git-send-email-felipe.contreras@gmail.com>

By moving the part that relies on rev->pending earlier, where we are already checking the special case where there's only one ref.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---
 builtin/log.c | 33 ++++++++++++++++-----------------
 1 file changed, 16 insertions(+), 17 deletions(-)
diff --git a/builtin/log.c b/builtin/log.c
index 6c78d7f..e4fb3c8 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -1049,15 +1049,6 @@ static char *find_branch_name(struct rev_info *rev)
 	if (0 <= positive) {
 		ref = rev->cmdline.rev[positive].name;
 		tip_sha1 = rev->cmdline.rev[positive].item->sha1;
-	} else if (!rev->cmdline.nr && rev->pending.nr == 1 &&
-		   !strcmp(rev->pending.objects[0].name, "HEAD")) {
-		/*
-		 * No actual ref from command line, but "HEAD" from
-		 * rev->def was added in setup_revisions()
-		 * e.g. format-patch --cover-letter -12
-		 */
-		ref = "HEAD";
-		tip_sha1 = rev->pending.objects[0].item->sha1;
 	} else {
 		return NULL;
 	}
@@ -1288,28 +1279,36 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
 	}
 
 	if (rev.pending.nr == 1) {
+		int check_head = 0;
+
 		if (rev.max_count < 0 && !rev.show_root_diff) {
 			/*
 			 * This is traditional behaviour of "git format-patch
 			 * origin" that prepares what the origin side still
 			 * does not have.
 			 */
-			unsigned char sha1[20];
-			const char *ref;
-
 			rev.pending.objects[0].item->flags |= UNINTERESTING;
 			add_head_to_pending(&rev);
-			ref = resolve_ref_unsafe("HEAD", sha1, 1, NULL);
-			if (ref && !prefixcmp(ref, "refs/heads/"))
-				branch_name = xstrdup(ref + strlen("refs/heads/"));
-			else
-				branch_name = xstrdup(""); /* no branch */
+			check_head = 1;
 		}
 		/*
 		 * Otherwise, it is "format-patch -22 HEAD", and/or
 		 * "format-patch --root HEAD".  The user wants
 		 * get_revision() to do the usual traversal.
 		 */
+
+		if (!strcmp(rev.pending.objects[0].name, "HEAD"))
+			check_head = 1;
+
+		if (check_head) {
+			unsigned char sha1[20];
+			const char *ref;
+			ref = resolve_ref_unsafe("HEAD", sha1, 1, NULL);
+			if (ref && !prefixcmp(ref, "refs/heads/"))
+				branch_name = xstrdup(ref + strlen("refs/heads/"));
+			else
+				branch_name = xstrdup(""); /* no branch */
+		}
 	}
 
 	/*
-- 
1.8.2
Previous: Felipe ContrerasNext: Felipe Contreras
Message 10 of 21 in “send-email: couple of improvements”
  1. 0/4 send-email: couple of improvementsFelipe Contreras, Apr 7, 2013
  2. 1/4 send-email: make annotate configurableFelipe Contreras, Apr 7, 2013
  3. Junio C HamanoApr 7, 2013
  4. Felipe ContrerasApr 7, 2013
  5. Junio C HamanoApr 7, 2013
  6. Felipe ContrerasApr 7, 2013
  7. 2/4 format-patch: improve head calculation for cover-letterFelipe Contreras, Apr 7, 2013
  8. Junio C HamanoApr 7, 2013
  9. Felipe ContrerasApr 7, 2013
  10. 3/4 format-patch: refactor branch name calculationFelipe Contreras, Apr 7, 2013
  11. 4/4 format-patch: add format.cover-letter configurationFelipe Contreras, Apr 7, 2013
  12. Junio C HamanoApr 7, 2013
  13. Felipe ContrerasApr 7, 2013
  14. Junio C HamanoApr 7, 2013
  15. Felipe ContrerasApr 7, 2013
  16. Matthieu MoyApr 7, 2013
  17. Felipe ContrerasApr 7, 2013
  18. Matthieu MoyApr 7, 2013
  19. Felipe ContrerasApr 7, 2013
  20. Junio C HamanoApr 7, 2013
  21. Felipe ContrerasApr 7, 2013

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.