While most of the time the heuristics used by pack-objects to sort the given object list are satisfying enough, there are cases where it can be useful for the user to sort the list with heuristics that would be better suited. The --nosort option disabled the internal sorting used by pack-objects, and runs the sliding window along the object list litterally as given on stdin. Signed-off-by: Mike Hommey <mh@xxxxxxxxxxxx> --- I would obviously add the appropriate documentation for this flag if this is accepted. I'll also try to send another documentation patch for pack-objects with some information compiled from Linus's explanation to my last message about pack-objects. builtin-pack-objects.c | 11 +++++++++-- 1 files changed, 9 insertions(+), 2 deletions(-) diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c index 4f44658..8bc2d5f 100644 --- a/builtin-pack-objects.c +++ b/builtin-pack-objects.c @@ -21,7 +21,7 @@ static const char pack_usage[] = "\ git-pack-objects [{ -q | --progress | --all-progress }] \n\ - [--max-pack-size=N] [--local] [--incremental] \n\ + [--max-pack-size=N] [--local] [--incremental] [--nosort]\n\ [--window=N] [--window-memory=N] [--depth=N] \n\ [--no-reuse-delta] [--no-reuse-object] [--delta-base-offset] \n\ [--threads=N] [--non-empty] [--revs [--unpacked | --all]*] [--reflog] \n\ @@ -64,6 +64,7 @@ static int non_empty; static int no_reuse_delta, no_reuse_object, keep_unreachable; static int local; static int incremental; +static int nosort; static int allow_ofs_delta; static const char *base_name; static int progress = 1; @@ -1715,7 +1716,9 @@ static void prepare_pack(int window, int depth) if (progress) progress_state = start_progress("Compressing objects", nr_deltas); - qsort(delta_list, n, sizeof(*delta_list), type_size_sort); + if (! nosort) + qsort(delta_list, n, sizeof(*delta_list), + type_size_sort); ll_find_deltas(delta_list, n, window+1, depth, &nr_done); stop_progress(&progress_state); if (nr_done != nr_deltas) @@ -1988,6 +1991,10 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix) incremental = 1; continue; } + if (!strcmp("--nosort", arg)) { + nosort = 1; + continue; + } if (!prefixcmp(arg, "--compression=")) { char *end; int level = strtoul(arg+14, &end, 0); -- 1.5.3.7 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html