Subject: [PATCH] pack-objects: clarification & option checks for --max-pack-size

From: Dana How <[email-masked]>
Date: Wed, 23 May 2007 10:11:33 -0700

Explain the special code for detecting a corner-case error,
and complain about --stdout & --max-pack-size being used together.

Signed-off-by: Dana L. How <[email-masked]>
---
 builtin-pack-objects.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c
index 19b0aa1..a5bade6 100644
--- a/builtin-pack-objects.c
+++ b/builtin-pack-objects.c
@@ -679,6 +679,12 @@ static void write_pack_file(void)
 		stop_progress(&progress_state);
 	if (written != nr_result)
 		die("wrote %u objects while expecting %u", written, nr_result);
+	/*
+	 * We have scanned through [0 ... i).  Since we have written
+	 * the correct number of objects,  the remaining [i ... nr_objects)
+	 * items must be either already written (due to out-of-order delta base)
+	 * or a preferred base.  Count those which are neither and complain if any.
+	 */
 	for (j = 0; i < nr_objects; i++) {
 		struct object_entry *e = objects + i;
 		j += !e->offset && !e->preferred_base;
@@ -1852,6 +1858,9 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
 	if (pack_to_stdout != !base_name)
 		usage(pack_usage);
 
+	if (pack_to_stdout && pack_size_limit)
+		die("--max-pack-size cannot be used to build a pack for transfer.");
+
 	if (!pack_to_stdout && thin)
 		die("--thin cannot be used to build an indexable pack.");
 
-- 
1.5.2.762.gd8c6-dirty