Re: [PATCH] branch: colour upstream branches
On Sun, Apr 14, 2013 at 8:31 PM, Duy Nguyen wrote: > On Mon, Apr 15, 2013 at 11:24 AM, Felipe Contreras > wrote: >> On Sun, Apr 14, 2013 at 7:55 PM, Duy Nguyen wrote: >>> On Mon, Apr 15, 2013 at 9:54 AM, Felipe Contreras >>> wrote: On Sun, Apr 14, 2013 at 6:46 PM, Duy Nguyen wrote: > On Mon, Apr 15, 2013 at 9:22 AM, Felipe Contreras > wrote: >> On Sun, Apr 14, 2013 at 5:31 PM, Duy Nguyen wrote: >>> On Sun, Apr 14, 2013 at 11:46 AM, Felipe Contreras >>> wrote: + char fancy[80]; - if (show_upstream_ref) + if (show_upstream_ref) { ref = shorten_unambiguous_ref(branch->merge[0]->dst, 0); + if (want_color(branch_use_color)) + snprintf(fancy, sizeof(fancy), "%s%s%s", + GIT_COLOR_BLUE, ref, GIT_COLOR_RESET); + else + strncpy(fancy, ref, sizeof(fancy)); + } + >>> >>> Please use strbuf for "fancy". >> >> Why? We would need to initialize and free it. What's the advantage? > > From a quick glance, I don't see any gurantee that "ref" (plus ansi > codes) will always fit in 80 bytes. Would changing it to 1024 (MAXREFLEN) fix it? >>> >>> You still need to take ansi codes into account. I think it's easier to >>> just use strbuf. >> >> I'm not sure what you mean. If there was an issue with snprintf, then >> there would be with this in refs.c: >> >> if (recursion > MAXDEPTH || strlen(refname) > MAXREFLEN) > > I mean GIT_COLOR_BLUE and GIT_COLOR_RESET take some bytes from > "fancy". In the stretched case where ref takes all MAXREFLEN, then > fancy must be a little bit bigger. Why do we need to think hard about I don't see that as a big issue, since it's a matter of finding the maximum length of those, but the argument from Jeff convinces me; I would not like to add extra code for the snprintf corner cases. Cheers. -- Felipe Contreras -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] branch: colour upstream branches
On Mon, Apr 15, 2013 at 11:24 AM, Felipe Contreras wrote: > On Sun, Apr 14, 2013 at 7:55 PM, Duy Nguyen wrote: >> On Mon, Apr 15, 2013 at 9:54 AM, Felipe Contreras >> wrote: >>> On Sun, Apr 14, 2013 at 6:46 PM, Duy Nguyen wrote: On Mon, Apr 15, 2013 at 9:22 AM, Felipe Contreras wrote: > On Sun, Apr 14, 2013 at 5:31 PM, Duy Nguyen wrote: >> On Sun, Apr 14, 2013 at 11:46 AM, Felipe Contreras >> wrote: >>> + char fancy[80]; >>> >>> - if (show_upstream_ref) >>> + if (show_upstream_ref) { >>> ref = shorten_unambiguous_ref(branch->merge[0]->dst, 0); >>> + if (want_color(branch_use_color)) >>> + snprintf(fancy, sizeof(fancy), "%s%s%s", >>> + GIT_COLOR_BLUE, ref, >>> GIT_COLOR_RESET); >>> + else >>> + strncpy(fancy, ref, sizeof(fancy)); >>> + } >>> + >> >> Please use strbuf for "fancy". > > Why? We would need to initialize and free it. What's the advantage? From a quick glance, I don't see any gurantee that "ref" (plus ansi codes) will always fit in 80 bytes. >>> >>> Would changing it to 1024 (MAXREFLEN) fix it? >> >> You still need to take ansi codes into account. I think it's easier to >> just use strbuf. > > I'm not sure what you mean. If there was an issue with snprintf, then > there would be with this in refs.c: > > if (recursion > MAXDEPTH || strlen(refname) > MAXREFLEN) I mean GIT_COLOR_BLUE and GIT_COLOR_RESET take some bytes from "fancy". In the stretched case where ref takes all MAXREFLEN, then fancy must be a little bit bigger. Why do we need to think hard about the size of fancy when strbuf would solve it nicely? -- Duy -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] branch: colour upstream branches
On Sun, Apr 14, 2013 at 7:55 PM, Duy Nguyen wrote: > On Mon, Apr 15, 2013 at 9:54 AM, Felipe Contreras > wrote: >> On Sun, Apr 14, 2013 at 6:46 PM, Duy Nguyen wrote: >>> On Mon, Apr 15, 2013 at 9:22 AM, Felipe Contreras >>> wrote: On Sun, Apr 14, 2013 at 5:31 PM, Duy Nguyen wrote: > On Sun, Apr 14, 2013 at 11:46 AM, Felipe Contreras > wrote: >> + char fancy[80]; >> >> - if (show_upstream_ref) >> + if (show_upstream_ref) { >> ref = shorten_unambiguous_ref(branch->merge[0]->dst, 0); >> + if (want_color(branch_use_color)) >> + snprintf(fancy, sizeof(fancy), "%s%s%s", >> + GIT_COLOR_BLUE, ref, >> GIT_COLOR_RESET); >> + else >> + strncpy(fancy, ref, sizeof(fancy)); >> + } >> + > > Please use strbuf for "fancy". Why? We would need to initialize and free it. What's the advantage? >>> >>> From a quick glance, I don't see any gurantee that "ref" (plus ansi >>> codes) will always fit in 80 bytes. >> >> Would changing it to 1024 (MAXREFLEN) fix it? > > You still need to take ansi codes into account. I think it's easier to > just use strbuf. I'm not sure what you mean. If there was an issue with snprintf, then there would be with this in refs.c: if (recursion > MAXDEPTH || strlen(refname) > MAXREFLEN) Cheers. -- Felipe Contreras -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] branch: colour upstream branches
On Mon, Apr 15, 2013 at 9:54 AM, Felipe Contreras wrote: > On Sun, Apr 14, 2013 at 6:46 PM, Duy Nguyen wrote: >> On Mon, Apr 15, 2013 at 9:22 AM, Felipe Contreras >> wrote: >>> On Sun, Apr 14, 2013 at 5:31 PM, Duy Nguyen wrote: On Sun, Apr 14, 2013 at 11:46 AM, Felipe Contreras wrote: > + char fancy[80]; > > - if (show_upstream_ref) > + if (show_upstream_ref) { > ref = shorten_unambiguous_ref(branch->merge[0]->dst, 0); > + if (want_color(branch_use_color)) > + snprintf(fancy, sizeof(fancy), "%s%s%s", > + GIT_COLOR_BLUE, ref, > GIT_COLOR_RESET); > + else > + strncpy(fancy, ref, sizeof(fancy)); > + } > + Please use strbuf for "fancy". >>> >>> Why? We would need to initialize and free it. What's the advantage? >> >> From a quick glance, I don't see any gurantee that "ref" (plus ansi >> codes) will always fit in 80 bytes. > > Would changing it to 1024 (MAXREFLEN) fix it? You still need to take ansi codes into account. I think it's easier to just use strbuf. -- Duy -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] branch: colour upstream branches
On Sun, Apr 14, 2013 at 6:46 PM, Duy Nguyen wrote: > On Mon, Apr 15, 2013 at 9:22 AM, Felipe Contreras > wrote: >> On Sun, Apr 14, 2013 at 5:31 PM, Duy Nguyen wrote: >>> On Sun, Apr 14, 2013 at 11:46 AM, Felipe Contreras >>> wrote: + char fancy[80]; - if (show_upstream_ref) + if (show_upstream_ref) { ref = shorten_unambiguous_ref(branch->merge[0]->dst, 0); + if (want_color(branch_use_color)) + snprintf(fancy, sizeof(fancy), "%s%s%s", + GIT_COLOR_BLUE, ref, GIT_COLOR_RESET); + else + strncpy(fancy, ref, sizeof(fancy)); + } + >>> >>> Please use strbuf for "fancy". >> >> Why? We would need to initialize and free it. What's the advantage? > > From a quick glance, I don't see any gurantee that "ref" (plus ansi > codes) will always fit in 80 bytes. Would changing it to 1024 (MAXREFLEN) fix it? -- Felipe Contreras -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] branch: colour upstream branches
On Mon, Apr 15, 2013 at 9:22 AM, Felipe Contreras wrote: > On Sun, Apr 14, 2013 at 5:31 PM, Duy Nguyen wrote: >> On Sun, Apr 14, 2013 at 11:46 AM, Felipe Contreras >> wrote: >>> + char fancy[80]; >>> >>> - if (show_upstream_ref) >>> + if (show_upstream_ref) { >>> ref = shorten_unambiguous_ref(branch->merge[0]->dst, 0); >>> + if (want_color(branch_use_color)) >>> + snprintf(fancy, sizeof(fancy), "%s%s%s", >>> + GIT_COLOR_BLUE, ref, >>> GIT_COLOR_RESET); >>> + else >>> + strncpy(fancy, ref, sizeof(fancy)); >>> + } >>> + >> >> Please use strbuf for "fancy". > > Why? We would need to initialize and free it. What's the advantage? >From a quick glance, I don't see any gurantee that "ref" (plus ansi codes) will always fit in 80 bytes. -- Duy -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] branch: colour upstream branches
On Sun, Apr 14, 2013 at 5:31 PM, Duy Nguyen wrote: > On Sun, Apr 14, 2013 at 11:46 AM, Felipe Contreras > wrote: >> + char fancy[80]; >> >> - if (show_upstream_ref) >> + if (show_upstream_ref) { >> ref = shorten_unambiguous_ref(branch->merge[0]->dst, 0); >> + if (want_color(branch_use_color)) >> + snprintf(fancy, sizeof(fancy), "%s%s%s", >> + GIT_COLOR_BLUE, ref, >> GIT_COLOR_RESET); >> + else >> + strncpy(fancy, ref, sizeof(fancy)); >> + } >> + > > Please use strbuf for "fancy". Why? We would need to initialize and free it. What's the advantage? -- Felipe Contreras -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] branch: colour upstream branches
On Sun, Apr 14, 2013 at 11:46 AM, Felipe Contreras wrote: > + char fancy[80]; > > - if (show_upstream_ref) > + if (show_upstream_ref) { > ref = shorten_unambiguous_ref(branch->merge[0]->dst, 0); > + if (want_color(branch_use_color)) > + snprintf(fancy, sizeof(fancy), "%s%s%s", > + GIT_COLOR_BLUE, ref, GIT_COLOR_RESET); > + else > + strncpy(fancy, ref, sizeof(fancy)); > + } > + Please use strbuf for "fancy". I also agree with Thomas that the color should not be hard coded. -- Duy -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] branch: colour upstream branches
Felipe Contreras writes: > It's hard to see them among so much output otherwise. > > Signed-off-by: Felipe Contreras > --- > builtin/branch.c | 27 --- > 1 file changed, 20 insertions(+), 7 deletions(-) > > diff --git a/builtin/branch.c b/builtin/branch.c > index 00d17d2..a1cdc29 100644 > --- a/builtin/branch.c > +++ b/builtin/branch.c > @@ -417,32 +417,45 @@ static void fill_tracking_info(struct strbuf *stat, > const char *branch_name, > int ours, theirs; > char *ref = NULL; > struct branch *branch = branch_get(branch_name); > + char fancy[80]; > > if (!stat_tracking_info(branch, &ours, &theirs)) { > if (branch && branch->merge && branch->merge[0]->dst && > - show_upstream_ref) > - strbuf_addf(stat, "[%s] ", > - shorten_unambiguous_ref(branch->merge[0]->dst, 0)); > + show_upstream_ref) { > + ref = shorten_unambiguous_ref(branch->merge[0]->dst, 0); > + if (want_color(branch_use_color)) > + strbuf_addf(stat, "[%s%s%s] ", > + GIT_COLOR_BLUE, ref, > GIT_COLOR_RESET); AFAICS you are hardcoding the color? The other bits of branch colors are configurable through branch.color.*, so why not this? -- Thomas Rast trast@{inf,student}.ethz.ch -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] branch: colour upstream branches
It's hard to see them among so much output otherwise. Signed-off-by: Felipe Contreras --- builtin/branch.c | 27 --- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/builtin/branch.c b/builtin/branch.c index 00d17d2..a1cdc29 100644 --- a/builtin/branch.c +++ b/builtin/branch.c @@ -417,32 +417,45 @@ static void fill_tracking_info(struct strbuf *stat, const char *branch_name, int ours, theirs; char *ref = NULL; struct branch *branch = branch_get(branch_name); + char fancy[80]; if (!stat_tracking_info(branch, &ours, &theirs)) { if (branch && branch->merge && branch->merge[0]->dst && - show_upstream_ref) - strbuf_addf(stat, "[%s] ", - shorten_unambiguous_ref(branch->merge[0]->dst, 0)); + show_upstream_ref) { + ref = shorten_unambiguous_ref(branch->merge[0]->dst, 0); + if (want_color(branch_use_color)) + strbuf_addf(stat, "[%s%s%s] ", + GIT_COLOR_BLUE, ref, GIT_COLOR_RESET); + else + strbuf_addf(stat, "[%s] ", ref); + } return; } - if (show_upstream_ref) + if (show_upstream_ref) { ref = shorten_unambiguous_ref(branch->merge[0]->dst, 0); + if (want_color(branch_use_color)) + snprintf(fancy, sizeof(fancy), "%s%s%s", + GIT_COLOR_BLUE, ref, GIT_COLOR_RESET); + else + strncpy(fancy, ref, sizeof(fancy)); + } + if (!ours) { if (ref) - strbuf_addf(stat, _("[%s: behind %d]"), ref, theirs); + strbuf_addf(stat, _("[%s: behind %d]"), fancy, theirs); else strbuf_addf(stat, _("[behind %d]"), theirs); } else if (!theirs) { if (ref) - strbuf_addf(stat, _("[%s: ahead %d]"), ref, ours); + strbuf_addf(stat, _("[%s: ahead %d]"), fancy, ours); else strbuf_addf(stat, _("[ahead %d]"), ours); } else { if (ref) strbuf_addf(stat, _("[%s: ahead %d, behind %d]"), - ref, ours, theirs); + fancy, ours, theirs); else strbuf_addf(stat, _("[ahead %d, behind %d]"), ours, theirs); -- 1.8.2.1.641.gd16d37a -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html