Subject: [PATCH 2/2] pack-objects: report actual number of threads to be used

From: Dan McGee <[email-masked]>
Date: Sat, 4 Apr 2009 11:59:56 -0500

In the case of a small repository, pack-objects is smart enough to not start
more threads than necessary. However, the output to the user always reports
the value of the pack.threads configuration and not the real number of
threads to be used. This is easily fixed by moving the printing of the
message after we have partitioned our work.

(pack.threads is on autodetect and would be set to 4)
$ git-repack -a -d -f
Counting objects: 55, done.
Delta compression using 2 threads.
Compressing objects: 100% (48/48), done.
Writing objects: 100% (55/55), done.
Total 55 (delta 10), reused 0 (delta 0)

Signed-off-by: Dan McGee <[email-masked]>
---
 builtin-pack-objects.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c
index 9fc3b35..8c1b036 100644
--- a/builtin-pack-objects.c
+++ b/builtin-pack-objects.c
@@ -1611,9 +1611,6 @@ static void ll_find_deltas(struct object_entry **list, unsigned list_size,
 		find_deltas(list, &list_size, window, depth, processed);
 		return;
 	}
-	if (progress > pack_to_stdout)
-		fprintf(stderr, "Delta compression using %d threads.\n",
-				delta_search_threads);
 
 	/* Partition the work amongst work threads. */
 	for (i = 0; i < delta_search_threads; i++) {
@@ -1638,11 +1635,18 @@ static void ll_find_deltas(struct object_entry **list, unsigned list_size,
 		p[i].list = list;
 		p[i].list_size = sub_size;
 		p[i].remaining = sub_size;
+		if(sub_size)
+			active_threads++;
 
 		list += sub_size;
 		list_size -= sub_size;
 	}
 
+	if (progress > pack_to_stdout)
+		fprintf(stderr, "Delta compression using %d threads.\n",
+				active_threads);
+	active_threads = 0;
+
 	/* Start work threads. */
 	for (i = 0; i < delta_search_threads; i++) {
 		if (!p[i].list_size)
-- 
1.6.2.2.404.ge96f3.dirty