Re: [PATCH 3/8] bundle: give list_prerequisites() loop body its own function

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: [PATCH 3/8] bundle: give list_prerequisites() loop body its own function

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:49:02

Jonathan Nieder [off-list ref] writes:
quoted hunk
No functional change intended.

Signed-off-by: Jonathan Nieder <redacted>
---
 bundle.c |   57 +++++++++++++++++++++++++++++++--------------------------
 1 files changed, 31 insertions(+), 26 deletions(-)
diff --git a/bundle.c b/bundle.c
index 0dd2acb..e90b5c5 100644
--- a/bundle.c
+++ b/bundle.c
@@ -193,6 +193,33 @@ static int is_tag_in_date_range(struct object *tag, struct rev_info *revs)
 		(revs->min_age == -1 || revs->min_age > date);
 }
 
+static void list_prerequisite(int bundle_fd, struct rev_info *revs,
+		struct commit *rev)
+{
+	struct strbuf buf = STRBUF_INIT;
+	struct pretty_print_context ctx = {0};
+	enum object_type type;
+	unsigned long size;
+
+	/*
+	 * The commit buffer is needed
+	 * to pretty-print boundary commits.
+	 */
+	rev->buffer = read_sha1_file(rev->object.sha1, &type, &size);
+
+	strbuf_addch(&buf, '-');
+	strbuf_add(&buf, sha1_to_hex(rev->object.sha1), 40);
+	strbuf_addch(&buf, ' ');
+	pretty_print_commit(CMIT_FMT_ONELINE, rev, &buf, &ctx);
+	strbuf_addch(&buf, '\n');
+
+	write_or_die(bundle_fd, buf.buf, buf.len);
+
+	rev->object.flags |= UNINTERESTING;
+	add_pending_object(revs, &rev->object, buf.buf);
+	strbuf_release(&buf);
+}
+
 static int list_prerequisites(int bundle_fd, struct rev_info *revs,
 		int argc, const char * const *argv)
 {
@@ -209,33 +236,11 @@ static int list_prerequisites(int bundle_fd, struct rev_info *revs,
 	if (prepare_revision_walk(&boundary_revs))
 		return error("revision walk setup failed");
 
-	while ((rev = get_revision(&boundary_revs))) {
-		if (rev->object.flags & BOUNDARY) {
-...
-		} else {
+	while ((rev = get_revision(revs))) {
+		if (rev->object.flags & BOUNDARY)
+			list_prerequisite(bundle_fd, revs, rev);
+		else
 			rev->object.flags |= SHOWN;
-		}
You used to walk boundary_revs but now you walk revs that is given by the
caller, exhausting the revs.pending the caller wanted to use later to feed
pack_objects with?

Confused...

Re: [PATCH 3/8] bundle: give list_prerequisites() loop body its own function

From: Jonathan Nieder <hidden>
Date: 2016-06-15 22:49:02

Junio C Hamano wrote:
Jonathan Nieder [off-list ref] writes:
quoted
@@ -209,33 +236,11 @@ static int list_prerequisites(int bundle_fd, struct rev_info *revs,
 	if (prepare_revision_walk(&boundary_revs))
 		return error("revision walk setup failed");
 
-	while ((rev = get_revision(&boundary_revs))) {
-		if (rev->object.flags & BOUNDARY) {
-...
-		} else {
+	while ((rev = get_revision(revs))) {
+		if (rev->object.flags & BOUNDARY)
+			list_prerequisite(bundle_fd, revs, rev);
+		else
 			rev->object.flags |= SHOWN;
-		}
You used to walk boundary_revs but now you walk revs that is given by the
caller
Agh!  Typo.  Thanks for catching it.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help