* [PATCH v2 0/5] nd/maint-branch-desc-doc reroll
@ 2013-01-03 14:03 Nguyễn Thái Ngọc Duy
2013-01-03 14:03 ` [PATCH v2 1/5] config.txt: a few lines about branch.<name>.description Nguyễn Thái Ngọc Duy
` (4 more replies)
0 siblings, 5 replies; 8+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2013-01-03 14:03 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy
- move the comment in 5/5 into the commented code block
- resolve branch name for "HEAD" in 4/5
Nguyễn Thái Ngọc Duy (5):
config.txt: a few lines about branch.<name>.description
branch: delete branch description if it's empty
t4014: a few more tests on cover letter using branch description
format-patch: pick up correct branch name from symbolic ref
format-patch: pick up branch description when no ref is specified
Documentation/config.txt | 6 ++++++
builtin/branch.c | 2 +-
builtin/log.c | 33 ++++++++++++++++++++-------------
t/t4014-format-patch.sh | 42 ++++++++++++++++++++++++++++++++++++++++++
4 files changed, 69 insertions(+), 14 deletions(-)
--
1.8.0.rc2.23.g1fb49df
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 1/5] config.txt: a few lines about branch.<name>.description
2013-01-03 14:03 [PATCH v2 0/5] nd/maint-branch-desc-doc reroll Nguyễn Thái Ngọc Duy
@ 2013-01-03 14:03 ` Nguyễn Thái Ngọc Duy
2013-01-03 14:03 ` [PATCH v2 2/5] branch: delete branch description if it's empty Nguyễn Thái Ngọc Duy
` (3 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2013-01-03 14:03 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
Documentation/config.txt | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index bf8f911..ee64846 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -735,6 +735,12 @@ branch.<name>.rebase::
it unless you understand the implications (see linkgit:git-rebase[1]
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::
Specify the command to invoke the specified browser. The
specified command is evaluated in shell with the URLs passed
--
1.8.0.rc2.23.g1fb49df
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 2/5] branch: delete branch description if it's empty
2013-01-03 14:03 [PATCH v2 0/5] nd/maint-branch-desc-doc reroll Nguyễn Thái Ngọc Duy
2013-01-03 14:03 ` [PATCH v2 1/5] config.txt: a few lines about branch.<name>.description Nguyễn Thái Ngọc Duy
@ 2013-01-03 14:03 ` Nguyễn Thái Ngọc Duy
2013-01-03 14:03 ` [PATCH v2 3/5] t4014: a few more tests on cover letter using branch description Nguyễn Thái Ngọc Duy
` (2 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2013-01-03 14:03 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
builtin/branch.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/builtin/branch.c b/builtin/branch.c
index 1ec9c02..873f624 100644
--- a/builtin/branch.c
+++ b/builtin/branch.c
@@ -725,7 +725,7 @@ static int edit_branch_description(const char *branch_name)
stripspace(&buf, 1);
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(&buf);
--
1.8.0.rc2.23.g1fb49df
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 3/5] t4014: a few more tests on cover letter using branch description
2013-01-03 14:03 [PATCH v2 0/5] nd/maint-branch-desc-doc reroll Nguyễn Thái Ngọc Duy
2013-01-03 14:03 ` [PATCH v2 1/5] config.txt: a few lines about branch.<name>.description Nguyễn Thái Ngọc Duy
2013-01-03 14:03 ` [PATCH v2 2/5] branch: delete branch description if it's empty Nguyễn Thái Ngọc Duy
@ 2013-01-03 14:03 ` Nguyễn Thái Ngọc Duy
2013-01-03 14:03 ` [PATCH v2 4/5] format-patch: pick up correct branch name from symbolic ref Nguyễn Thái Ngọc Duy
2013-01-03 14:03 ` [PATCH v2 5/5] format-patch: pick up branch description when no ref is specified Nguyễn Thái Ngọc Duy
4 siblings, 0 replies; 8+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2013-01-03 14:03 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
t/t4014-format-patch.sh | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh
index 16a4ca1..ec9ef9e 100755
--- a/t/t4014-format-patch.sh
+++ b/t/t4014-format-patch.sh
@@ -963,4 +963,25 @@ test_expect_success 'format patch ignores color.ui' '
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_done
--
1.8.0.rc2.23.g1fb49df
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 4/5] format-patch: pick up correct branch name from symbolic ref
2013-01-03 14:03 [PATCH v2 0/5] nd/maint-branch-desc-doc reroll Nguyễn Thái Ngọc Duy
` (2 preceding siblings ...)
2013-01-03 14:03 ` [PATCH v2 3/5] t4014: a few more tests on cover letter using branch description Nguyễn Thái Ngọc Duy
@ 2013-01-03 14:03 ` Nguyễn Thái Ngọc Duy
2013-01-03 14:03 ` [PATCH v2 5/5] format-patch: pick up branch description when no ref is specified Nguyễn Thái Ngọc Duy
4 siblings, 0 replies; 8+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2013-01-03 14:03 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy
find_branch_name() assumes to take refs/heads/<branch>. But we also
have symbolic refs, such as HEAD, that can point to a valid branch in
refs/heads and do not follow refs/heads/<branch> syntax. Remove the
assumption and apply normal ref resolution. After all it would be
confusing if rev machinery resolves a ref in one way and
find_branch_name() another.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
builtin/log.c | 21 +++++++++------------
t/t4014-format-patch.sh | 14 ++++++++++++++
2 files changed, 23 insertions(+), 12 deletions(-)
diff --git a/builtin/log.c b/builtin/log.c
index e7b7db1..039bf67 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -1016,8 +1016,8 @@ static char *find_branch_name(struct rev_info *rev)
{
int i, positive = -1;
unsigned char branch_sha1[20];
- struct strbuf buf = STRBUF_INIT;
- const char *branch;
+ const char *ref;
+ char *full_ref, *branch = NULL;
for (i = 0; i < rev->cmdline.nr; i++) {
if (rev->cmdline.rev[i].flags & UNINTERESTING)
@@ -1029,16 +1029,13 @@ static char *find_branch_name(struct rev_info *rev)
}
if (positive < 0)
return NULL;
- strbuf_addf(&buf, "refs/heads/%s", rev->cmdline.rev[positive].name);
- branch = resolve_ref_unsafe(buf.buf, branch_sha1, 1, NULL);
- if (!branch ||
- prefixcmp(branch, "refs/heads/") ||
- hashcmp(rev->cmdline.rev[positive].item->sha1, branch_sha1))
- branch = NULL;
- strbuf_release(&buf);
- if (branch)
- return xstrdup(rev->cmdline.rev[positive].name);
- return NULL;
+ ref = rev->cmdline.rev[positive].name;
+ if (dwim_ref(ref, strlen(ref), branch_sha1, &full_ref) &&
+ !prefixcmp(full_ref, "refs/heads/") &&
+ !hashcmp(rev->cmdline.rev[positive].item->sha1, branch_sha1))
+ branch = xstrdup(full_ref + strlen("refs/heads/"));
+ free(full_ref);
+ return branch;
}
int cmd_format_patch(int argc, const char **argv, const char *prefix)
diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh
index ec9ef9e..903a797 100755
--- a/t/t4014-format-patch.sh
+++ b/t/t4014-format-patch.sh
@@ -984,4 +984,18 @@ test_expect_success 'cover letter using branch description (3)' '
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_done
--
1.8.0.rc2.23.g1fb49df
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 5/5] format-patch: pick up branch description when no ref is specified
2013-01-03 14:03 [PATCH v2 0/5] nd/maint-branch-desc-doc reroll Nguyễn Thái Ngọc Duy
` (3 preceding siblings ...)
2013-01-03 14:03 ` [PATCH v2 4/5] format-patch: pick up correct branch name from symbolic ref Nguyễn Thái Ngọc Duy
@ 2013-01-03 14:03 ` Nguyễn Thái Ngọc Duy
2013-01-03 15:49 ` Junio C Hamano
4 siblings, 1 reply; 8+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2013-01-03 14:03 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy
We only try to get branch name in "format-patch origin" case or
similar and not "format-patch -22" where HEAD is automatically
added. Without correct branch name, branch description cannot be
added. Make sure we always get branch name.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
builtin/log.c | 16 +++++++++++++---
t/t4014-format-patch.sh | 7 +++++++
2 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/builtin/log.c b/builtin/log.c
index 039bf67..81683f6 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -1027,12 +1027,22 @@ static char *find_branch_name(struct rev_info *rev)
else
return NULL;
}
- if (positive < 0)
+ if (positive >= 0)
+ ref = rev->cmdline.rev[positive].name;
+ 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";
+ else
return NULL;
- ref = rev->cmdline.rev[positive].name;
if (dwim_ref(ref, strlen(ref), branch_sha1, &full_ref) &&
!prefixcmp(full_ref, "refs/heads/") &&
- !hashcmp(rev->cmdline.rev[positive].item->sha1, branch_sha1))
+ (positive < 0 ||
+ !hashcmp(rev->cmdline.rev[positive].item->sha1, branch_sha1)))
branch = xstrdup(full_ref + strlen("refs/heads/"));
free(full_ref);
return branch;
diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh
index 903a797..7e52941 100755
--- a/t/t4014-format-patch.sh
+++ b/t/t4014-format-patch.sh
@@ -998,4 +998,11 @@ test_expect_success 'cover letter using branch description (5)' '
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
--
1.8.0.rc2.23.g1fb49df
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 5/5] format-patch: pick up branch description when no ref is specified
2013-01-03 14:03 ` [PATCH v2 5/5] format-patch: pick up branch description when no ref is specified Nguyễn Thái Ngọc Duy
@ 2013-01-03 15:49 ` Junio C Hamano
2013-01-03 16:16 ` [PATCH v3 " Nguyễn Thái Ngọc Duy
0 siblings, 1 reply; 8+ messages in thread
From: Junio C Hamano @ 2013-01-03 15:49 UTC (permalink / raw)
To: Nguyễn Thái Ngọc Duy; +Cc: git
Nguyễn Thái Ngọc Duy <pclouds@gmail.com> writes:
> We only try to get branch name in "format-patch origin" case or
> similar and not "format-patch -22" where HEAD is automatically
> added. Without correct branch name, branch description cannot be
> added. Make sure we always get branch name.
>
> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
> ---
> builtin/log.c | 16 +++++++++++++---
> t/t4014-format-patch.sh | 7 +++++++
> 2 files changed, 20 insertions(+), 3 deletions(-)
>
> diff --git a/builtin/log.c b/builtin/log.c
> index 039bf67..81683f6 100644
> --- a/builtin/log.c
> +++ b/builtin/log.c
> @@ -1027,12 +1027,22 @@ static char *find_branch_name(struct rev_info *rev)
> else
> return NULL;
> }
> - if (positive < 0)
> + if (positive >= 0)
> + ref = rev->cmdline.rev[positive].name;
> + 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";
> + else
> return NULL;
> - ref = rev->cmdline.rev[positive].name;
> if (dwim_ref(ref, strlen(ref), branch_sha1, &full_ref) &&
> !prefixcmp(full_ref, "refs/heads/") &&
> - !hashcmp(rev->cmdline.rev[positive].item->sha1, branch_sha1))
> + (positive < 0 ||
> + !hashcmp(rev->cmdline.rev[positive].item->sha1, branch_sha1)))
This hashcmp() is to make sure that the tip we _guessed_ with
dwim_ref() that the user meant matches what we are going to use, so
I do not think disabling the check is a good idea.
You could (and I think you should) do something like this:
if (0 <= positive) {
ref = rev->cmdline.rev[positive].name;
tip_sha1 = rev->cmdline.rev[positive].item->sha1;
} else if (... defaulted to implied HEAD? ...) {
ref = "HEAD";
tip_sha1 = rev->pending.objects[0].item->sha1;
} else {
return NULL;
}
if (dwim_ref(...) && !prefixcmp(full_ref, "refs/heads/") &&
!hashcmp(tip_sha1, branch_sha1))
to preserve that safety instead.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 5/5] format-patch: pick up branch description when no ref is specified
2013-01-03 15:49 ` Junio C Hamano
@ 2013-01-03 16:16 ` Nguyễn Thái Ngọc Duy
0 siblings, 0 replies; 8+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2013-01-03 16:16 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy
We only try to get branch name in "format-patch origin" case or
similar and not "format-patch -22" where HEAD is automatically
added. Without correct branch name, branch description cannot be
added. Make sure we always get branch name.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
On Thu, Jan 3, 2013 at 10:49 PM, Junio C Hamano <gitster@pobox.com> wrote:
> You could (and I think you should) do something like this:
>
> if (0 <= positive) {
> ref = rev->cmdline.rev[positive].name;
> tip_sha1 = rev->cmdline.rev[positive].item->sha1;
> } else if (... defaulted to implied HEAD? ...) {
> ref = "HEAD";
> tip_sha1 = rev->pending.objects[0].item->sha1;
> } else {
> return NULL;
> }
>
> if (dwim_ref(...) && !prefixcmp(full_ref, "refs/heads/") &&
> !hashcmp(tip_sha1, branch_sha1))
>
> to preserve that safety instead.
Good idea. Done.
builtin/log.c | 18 +++++++++++++++---
t/t4014-format-patch.sh | 7 +++++++
2 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/builtin/log.c b/builtin/log.c
index 039bf67..72a368a 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -1016,6 +1016,7 @@ static char *find_branch_name(struct rev_info *rev)
{
int i, positive = -1;
unsigned char branch_sha1[20];
+ const unsigned char *tip_sha1;
const char *ref;
char *full_ref, *branch = NULL;
@@ -1027,12 +1028,23 @@ static char *find_branch_name(struct rev_info *rev)
else
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;
- ref = rev->cmdline.rev[positive].name;
if (dwim_ref(ref, strlen(ref), branch_sha1, &full_ref) &&
!prefixcmp(full_ref, "refs/heads/") &&
- !hashcmp(rev->cmdline.rev[positive].item->sha1, branch_sha1))
+ !hashcmp(tip_sha1, branch_sha1))
branch = xstrdup(full_ref + strlen("refs/heads/"));
free(full_ref);
return branch;
diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh
index 903a797..7e52941 100755
--- a/t/t4014-format-patch.sh
+++ b/t/t4014-format-patch.sh
@@ -998,4 +998,11 @@ test_expect_success 'cover letter using branch description (5)' '
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
--
1.8.0.rc2.23.g1fb49df
^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2013-01-03 16:16 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-03 14:03 [PATCH v2 0/5] nd/maint-branch-desc-doc reroll Nguyễn Thái Ngọc Duy
2013-01-03 14:03 ` [PATCH v2 1/5] config.txt: a few lines about branch.<name>.description Nguyễn Thái Ngọc Duy
2013-01-03 14:03 ` [PATCH v2 2/5] branch: delete branch description if it's empty Nguyễn Thái Ngọc Duy
2013-01-03 14:03 ` [PATCH v2 3/5] t4014: a few more tests on cover letter using branch description Nguyễn Thái Ngọc Duy
2013-01-03 14:03 ` [PATCH v2 4/5] format-patch: pick up correct branch name from symbolic ref Nguyễn Thái Ngọc Duy
2013-01-03 14:03 ` [PATCH v2 5/5] format-patch: pick up branch description when no ref is specified Nguyễn Thái Ngọc Duy
2013-01-03 15:49 ` Junio C Hamano
2013-01-03 16:16 ` [PATCH v3 " Nguyễn Thái Ngọc Duy
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).