format-patch: refactor branch name calculation
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> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
80d35ca0aa
commit
427a8ec5e7
@ -1052,15 +1052,6 @@ static char *find_branch_name(struct rev_info *rev)
|
|||||||
if (0 <= positive) {
|
if (0 <= positive) {
|
||||||
ref = rev->cmdline.rev[positive].name;
|
ref = rev->cmdline.rev[positive].name;
|
||||||
tip_sha1 = rev->cmdline.rev[positive].item->sha1;
|
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 {
|
} else {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -1280,28 +1271,36 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (rev.pending.nr == 1) {
|
if (rev.pending.nr == 1) {
|
||||||
|
int check_head = 0;
|
||||||
|
|
||||||
if (rev.max_count < 0 && !rev.show_root_diff) {
|
if (rev.max_count < 0 && !rev.show_root_diff) {
|
||||||
/*
|
/*
|
||||||
* This is traditional behaviour of "git format-patch
|
* This is traditional behaviour of "git format-patch
|
||||||
* origin" that prepares what the origin side still
|
* origin" that prepares what the origin side still
|
||||||
* does not have.
|
* does not have.
|
||||||
*/
|
*/
|
||||||
unsigned char sha1[20];
|
|
||||||
const char *ref;
|
|
||||||
|
|
||||||
rev.pending.objects[0].item->flags |= UNINTERESTING;
|
rev.pending.objects[0].item->flags |= UNINTERESTING;
|
||||||
add_head_to_pending(&rev);
|
add_head_to_pending(&rev);
|
||||||
ref = resolve_ref_unsafe("HEAD", sha1, 1, NULL);
|
check_head = 1;
|
||||||
if (ref && !prefixcmp(ref, "refs/heads/"))
|
|
||||||
branch_name = xstrdup(ref + strlen("refs/heads/"));
|
|
||||||
else
|
|
||||||
branch_name = xstrdup(""); /* no branch */
|
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* Otherwise, it is "format-patch -22 HEAD", and/or
|
* Otherwise, it is "format-patch -22 HEAD", and/or
|
||||||
* "format-patch --root HEAD". The user wants
|
* "format-patch --root HEAD". The user wants
|
||||||
* get_revision() to do the usual traversal.
|
* 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 */
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user