git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Thomas Rast <trast@inf.ethz.ch>
To: Junio C Hamano <gitster@pobox.com>
Cc: Thomas Rast <trast@student.ethz.ch>, <git@vger.kernel.org>,
	Jannis Pohlmann <jannis.pohlmann@codethink.co.uk>
Subject: Re: [PATCH 2/2] bundle: use a strbuf to scan the log for boundary commits
Date: Wed, 22 Feb 2012 21:25:53 +0100	[thread overview]
Message-ID: <87hayivcmm.fsf@thomas.inf.ethz.ch> (raw)
In-Reply-To: <7vlinuaaab.fsf@alter.siamese.dyndns.org> (Junio C. Hamano's message of "Wed, 22 Feb 2012 12:22:04 -0800")

Junio C Hamano <gitster@pobox.com> writes:

> Thomas Rast <trast@student.ethz.ch> writes:
>
>>   # v2 git bundle
>>   $(git rev-list --pretty=oneline --boundary <ARGS> | grep ^-)
>>
>> git-bundle actually spawns exactly this rev-list invocation, and does
>> the grepping internally.
>>
>> There was a subtle bug in the latter step: it used fgets() with a
>> 1024-byte buffer.  If the user has sufficiently long subjects (e.g.,
>> by not adhering to the git oneline-subject convention in the first
>> place), the 'oneline' format can easily overflow the buffer.
>
> Thanks for diagnosing this, but I wonder if it even needs --pretty=oneline
> to begin with, except for debugging purposes.
>
> Do we ever use the subject string read from the rev-list output in any
> way?
>
> In other words, I am wondering if the right patch to minimally fix the
> issue starting from older releases is something along this line instead:

Not sure.  The only use I could think of would be to google for the
subjects, in the hope of finding some repository that has the commit you
are looking for.  Other than that...

In any case the --pretty=oneline is very deliberate, as we can see from
the commit below.  It just doesn't give a reason :-)

commit 239296770dae75e21c179733785731ec6ffae1f5
Author: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Date:   Fri Feb 23 03:17:51 2007 +0100

    git-bundle: record commit summary in the prerequisite data

diff --git a/builtin-bundle.c b/builtin-bundle.c
index 191ec55..d74afaa 100644
--- a/builtin-bundle.c
+++ b/builtin-bundle.c
@@ -267,7 +267,7 @@ static int create_bundle(struct bundle_header *header, const char *path,
 		int argc, const char **argv)
 {
 	int bundle_fd = -1;
-	const char **argv_boundary = xmalloc((argc + 3) * sizeof(const char *));
+	const char **argv_boundary = xmalloc((argc + 4) * sizeof(const char *));
 	const char **argv_pack = xmalloc(4 * sizeof(const char *));
 	int pid, in, out, i, status;
 	char buffer[1024];
@@ -282,10 +282,11 @@ static int create_bundle(struct bundle_header *header, const char *path,
 	write_or_die(bundle_fd, bundle_signature, strlen(bundle_signature));
 
 	/* write prerequisites */
-	memcpy(argv_boundary + 2, argv + 1, argc * sizeof(const char *));
+	memcpy(argv_boundary + 3, argv + 1, argc * sizeof(const char *));
 	argv_boundary[0] = "rev-list";
 	argv_boundary[1] = "--boundary";
-	argv_boundary[argc + 1] = NULL;
+	argv_boundary[2] = "--pretty=oneline";
+	argv_boundary[argc + 2] = NULL;
 	out = -1;
 	pid = fork_with_pipe(argv_boundary, NULL, &out);
 	if (pid < 0)


-- 
Thomas Rast
trast@{inf,student}.ethz.ch

  reply	other threads:[~2012-02-22 20:26 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-22 16:05 Problems with unrecognized headers in git bundles Jannis Pohlmann
2012-02-22 19:34 ` [PATCH 1/2] bundle: put strbuf_readline_fd in strbuf.c with adjustments Thomas Rast
2012-02-22 19:34   ` [PATCH 2/2] bundle: use a strbuf to scan the log for boundary commits Thomas Rast
2012-02-22 20:22     ` Junio C Hamano
2012-02-22 20:25       ` Thomas Rast [this message]
2012-02-22 20:50         ` Junio C Hamano
2012-02-22 21:00         ` Jeff King
2012-02-22 20:55     ` Jeff King
2012-02-22 22:10       ` Johannes Sixt
2012-02-23  3:20     ` Junio C Hamano
2012-02-23  3:38     ` Junio C Hamano
2012-02-23  9:42       ` [PATCH v2 0/4] Making an elephant out of a getline() bug Thomas Rast
2012-02-23  9:42         ` [PATCH v2 1/4] strbuf: improve strbuf_get*line documentation Thomas Rast
2012-02-23 10:08           ` Jeff King
2012-02-23  9:42         ` [PATCH v2 2/4] bundle: put strbuf_readline_fd in strbuf.c with adjustments Thomas Rast
2012-02-23  9:42         ` [PATCH v2 3/4] t5704: match tests to modern style Thomas Rast
2012-02-23 23:36           ` Junio C Hamano
2012-02-23  9:42         ` [PATCH v2 4/4] bundle: use a strbuf to scan the log for boundary commits Thomas Rast
2012-02-23 19:04         ` [PATCH v2 0/4] Making an elephant out of a getline() bug Junio C Hamano
2012-02-22 20:51   ` [PATCH 1/2] bundle: put strbuf_readline_fd in strbuf.c with adjustments Jeff King
2012-02-22 20:25 ` Problems with unrecognized headers in git bundles Øyvind A. Holm
2012-02-22 20:40   ` Øyvind A. Holm
2012-02-23 13:27   ` Erik Faye-Lund

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87hayivcmm.fsf@thomas.inf.ethz.ch \
    --to=trast@inf.ethz.ch \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jannis.pohlmann@codethink.co.uk \
    --cc=trast@student.ethz.ch \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).