Re: [PATCH] Remove the line length limit for graft files
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Dec 27, 2013, 21:48 UTC
- Message-ID
- <7vr48yj77l.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <alpine.DEB.1.00.1312272146590.1191@s15462909.onlinehome-server.info>
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
Show 27 quoted lines
> Support for grafts predates Git's strbuf, and hence it is understandable > that there was a hard-coded line length limit of 1023 characters (which > was chosen a bit awkwardly, given that it is *exactly* one byte short of > aligning with the 41 bytes occupied by a commit name and the following > space or new-line character). > > While regular commit histories hardly win comprehensibility in general > if they merge more than twenty-two branches in one go, it is not Git's > business to limit grafts in such a way. > > In this particular developer's case, the use case that requires > substantially longer graft lines to be supported is the visualization of > the commits' order implied by their changes: commits are considered to > have an implicit relationship iff exchanging them in an interactive > rebase would result in merge conflicts. > > Thusly implied branches tend to be very shallow in general, and the > resulting thicket of implied branches is usually very wide; It is > actually quite common that *most* of the commits in a topic branch have > not even one implied parent, so that a final merge commit has about as > many implied parents as there are commits in said branch. > > Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> > --- > builtin/blame.c | 8 ++++---- > commit.c | 10 +++++----- > 2 files changed, 9 insertions(+), 9 deletions(-)
Makes sense. It is in line with the spirit of ef98c5cafb3e (commit-tree: lift completely arbitrary limit of 16 parents, 2008-06-27), too ;-)
Thanks, will queue.
Show 59 quoted lines
> diff --git a/builtin/blame.c b/builtin/blame.c
> index 1407ae7..9047b6e 100644
> --- a/builtin/blame.c
> +++ b/builtin/blame.c
> @@ -1804,17 +1804,17 @@ static int prepare_lines(struct scoreboard *sb)
> static int read_ancestry(const char *graft_file)
> {
> FILE *fp = fopen(graft_file, "r");
> - char buf[1024];
> + struct strbuf buf = STRBUF_INIT;
> if (!fp)
> return -1;
> - while (fgets(buf, sizeof(buf), fp)) {
> + while (!strbuf_getwholeline(&buf, fp, '\n')) {
> /* The format is just "Commit Parent1 Parent2 ...\n" */
> - int len = strlen(buf);
> - struct commit_graft *graft = read_graft_line(buf, len);
> + struct commit_graft *graft = read_graft_line(buf.buf, buf.len);
> if (graft)
> register_commit_graft(graft, 0);
> }
> fclose(fp);
> + strbuf_release(&buf);
> return 0;
> }
>
> diff --git a/commit.c b/commit.c
> index de16a3c..57ebea2 100644
> --- a/commit.c
> +++ b/commit.c
> @@ -196,19 +196,19 @@ bad_graft_data:
> static int read_graft_file(const char *graft_file)
> {
> FILE *fp = fopen(graft_file, "r");
> - char buf[1024];
> + struct strbuf buf = STRBUF_INIT;
> if (!fp)
> return -1;
> - while (fgets(buf, sizeof(buf), fp)) {
> + while (!strbuf_getwholeline(&buf, fp, '\n')) {
> /* The format is just "Commit Parent1 Parent2 ...\n" */
> - int len = strlen(buf);
> - struct commit_graft *graft = read_graft_line(buf, len);
> + struct commit_graft *graft = read_graft_line(buf.buf, buf.len);
> if (!graft)
> continue;
> if (register_commit_graft(graft, 1))
> - error("duplicate graft data: %s", buf);
> + error("duplicate graft data: %s", buf.buf);
> }
> fclose(fp);
> + strbuf_release(&buf);
> return 0;
> }
>
> --
> 1.8.4.msysgit.0.1109.g3c58b16
>
> -- -- -- *** Please reply-to-all at all times *** *** (do not pretend to know who is subscribed and who is not) *** *** Please avoid top-posting. *** The msysGit Wiki is here: https://github.com/msysgit/msysgit/wiki - Github accounts are free. You received this message because you are subscribed to the Google Groups "msysGit" group. To post to this group, send email to msysgit@googlegroups.com To unsubscribe from this group, send email to msysgit+unsubscribe@googlegroups.com For more options, and view previous threads, visit this group at http://groups.google.com/group/msysgit?hl=en_US?hl=en --- You received this message because you are subscribed to the Google Groups "msysGit" group. To unsubscribe from this group and stop receiving emails from it, send an email to msysgit+unsubscribe@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.