Merge branch 'nd/maint-branch-desc-doc'
Teach various forms of "format-patch" command line to identify what branch the patches are taken from, so that the branch description is picked up in more cases. * nd/maint-branch-desc-doc: format-patch: pick up branch description when no ref is specified format-patch: pick up correct branch name from symbolic ref t4014: a few more tests on cover letter using branch description branch: delete branch description if it's empty config.txt: a few lines about branch.<name>.description
This commit is contained in:
commit
3a2ce79981
@ -739,6 +739,12 @@ branch.<name>.rebase::
|
|||||||
it unless you understand the implications (see linkgit:git-rebase[1]
|
it unless you understand the implications (see linkgit:git-rebase[1]
|
||||||
for details).
|
for details).
|
||||||
|
|
||||||
|
branch.<name>.description::
|
||||||
|
Branch description, can be edited with
|
||||||
|
`git branch --edit-description`. Branch description is
|
||||||
|
automatically added in the format-patch cover letter or
|
||||||
|
request-pull summary.
|
||||||
|
|
||||||
browser.<tool>.cmd::
|
browser.<tool>.cmd::
|
||||||
Specify the command to invoke the specified browser. The
|
Specify the command to invoke the specified browser. The
|
||||||
specified command is evaluated in shell with the URLs passed
|
specified command is evaluated in shell with the URLs passed
|
||||||
|
@ -725,7 +725,7 @@ static int edit_branch_description(const char *branch_name)
|
|||||||
stripspace(&buf, 1);
|
stripspace(&buf, 1);
|
||||||
|
|
||||||
strbuf_addf(&name, "branch.%s.description", branch_name);
|
strbuf_addf(&name, "branch.%s.description", branch_name);
|
||||||
status = git_config_set(name.buf, buf.buf);
|
status = git_config_set(name.buf, buf.len ? buf.buf : NULL);
|
||||||
strbuf_release(&name);
|
strbuf_release(&name);
|
||||||
strbuf_release(&buf);
|
strbuf_release(&buf);
|
||||||
|
|
||||||
|
@ -1016,8 +1016,9 @@ static char *find_branch_name(struct rev_info *rev)
|
|||||||
{
|
{
|
||||||
int i, positive = -1;
|
int i, positive = -1;
|
||||||
unsigned char branch_sha1[20];
|
unsigned char branch_sha1[20];
|
||||||
struct strbuf buf = STRBUF_INIT;
|
const unsigned char *tip_sha1;
|
||||||
const char *branch;
|
const char *ref;
|
||||||
|
char *full_ref, *branch = NULL;
|
||||||
|
|
||||||
for (i = 0; i < rev->cmdline.nr; i++) {
|
for (i = 0; i < rev->cmdline.nr; i++) {
|
||||||
if (rev->cmdline.rev[i].flags & UNINTERESTING)
|
if (rev->cmdline.rev[i].flags & UNINTERESTING)
|
||||||
@ -1027,18 +1028,27 @@ static char *find_branch_name(struct rev_info *rev)
|
|||||||
else
|
else
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (positive < 0)
|
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;
|
return NULL;
|
||||||
strbuf_addf(&buf, "refs/heads/%s", rev->cmdline.rev[positive].name);
|
}
|
||||||
branch = resolve_ref_unsafe(buf.buf, branch_sha1, 1, NULL);
|
if (dwim_ref(ref, strlen(ref), branch_sha1, &full_ref) &&
|
||||||
if (!branch ||
|
!prefixcmp(full_ref, "refs/heads/") &&
|
||||||
prefixcmp(branch, "refs/heads/") ||
|
!hashcmp(tip_sha1, branch_sha1))
|
||||||
hashcmp(rev->cmdline.rev[positive].item->sha1, branch_sha1))
|
branch = xstrdup(full_ref + strlen("refs/heads/"));
|
||||||
branch = NULL;
|
free(full_ref);
|
||||||
strbuf_release(&buf);
|
return branch;
|
||||||
if (branch)
|
|
||||||
return xstrdup(rev->cmdline.rev[positive].name);
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int cmd_format_patch(int argc, const char **argv, const char *prefix)
|
int cmd_format_patch(int argc, const char **argv, const char *prefix)
|
||||||
|
@ -963,4 +963,46 @@ test_expect_success 'format patch ignores color.ui' '
|
|||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'cover letter using branch description (1)' '
|
||||||
|
git checkout rebuild-1 &&
|
||||||
|
test_config branch.rebuild-1.description hello &&
|
||||||
|
git format-patch --stdout --cover-letter master >actual &&
|
||||||
|
grep hello actual >/dev/null
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'cover letter using branch description (2)' '
|
||||||
|
git checkout rebuild-1 &&
|
||||||
|
test_config branch.rebuild-1.description hello &&
|
||||||
|
git format-patch --stdout --cover-letter rebuild-1~2..rebuild-1 >actual &&
|
||||||
|
grep hello actual >/dev/null
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'cover letter using branch description (3)' '
|
||||||
|
git checkout rebuild-1 &&
|
||||||
|
test_config branch.rebuild-1.description hello &&
|
||||||
|
git format-patch --stdout --cover-letter ^master rebuild-1 >actual &&
|
||||||
|
grep hello actual >/dev/null
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'cover letter using branch description (4)' '
|
||||||
|
git checkout rebuild-1 &&
|
||||||
|
test_config branch.rebuild-1.description hello &&
|
||||||
|
git format-patch --stdout --cover-letter master.. >actual &&
|
||||||
|
grep hello actual >/dev/null
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'cover letter using branch description (5)' '
|
||||||
|
git checkout rebuild-1 &&
|
||||||
|
test_config branch.rebuild-1.description hello &&
|
||||||
|
git format-patch --stdout --cover-letter -2 HEAD >actual &&
|
||||||
|
grep hello actual >/dev/null
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'cover letter using branch description (6)' '
|
||||||
|
git checkout rebuild-1 &&
|
||||||
|
test_config branch.rebuild-1.description hello &&
|
||||||
|
git format-patch --stdout --cover-letter -2 >actual &&
|
||||||
|
grep hello actual >/dev/null
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
Loading…
Reference in New Issue
Block a user