{"thread":{"id":"7542","subject":"[PATCH 13/13] recognize new options in git-{repack,pack-objects}","startedAt":"2007-04-05T22:42:31Z","lastAt":"2007-04-05T22:42:31Z","messageCount":1,"participants":["Dana How"],"isPatch":true,"patchVersion":1,"patchTotal":13},"messages":[{"id":"38754","messageId":"56b7f5510704051542o49cead12rbc318352462a6783@mail.gmail.com","threadId":"7542","inReplyTo":null,"subject":"[PATCH 13/13] recognize new options in git-{repack,pack-objects}","fromName":"Dana How","fromEmail":"danahow@gmail.com","sentAt":"2007-04-05T22:42:31Z","receivedAt":"2007-04-05T22:42:31Z","isPatch":true,"sender":{"key":"danahow@gmail.com","avatar":null},"body":"---\n builtin-pack-objects.c |   41 +++++++++++++++++++++++++++++++++++++++--\n git-repack.sh          |   12 ++++++++----\n 2 files changed, 47 insertions(+), 6 deletions(-)\n\n-- \nDana L. How  danahow@gmail.com  +1 650 804 5991 cell\n\n\nFrom a6a243c54f9bf1d663747827f9d3b36cbc6a5aee Mon Sep 17 00:00:00 2001\nFrom: Dana How <how@deathvalley.cswitch.com>\nDate: Thu, 5 Apr 2007 15:06:34 -0700\nSubject: [PATCH 13/13] recognize new options in git-{repack,pack-objects}\n\n---\n builtin-pack-objects.c |   41 +++++++++++++++++++++++++++++++++++++++--\n git-repack.sh          |   12 ++++++++----\n 2 files changed, 47 insertions(+), 6 deletions(-)\n\ndiff --git a/builtin-pack-objects.c b/builtin-pack-objects.c\nindex 3229df8..928ad30 100644\n--- a/builtin-pack-objects.c\n+++ b/builtin-pack-objects.c\n@@ -14,8 +14,8 @@\n #include \"list-objects.h\"\n \n static const char pack_usage[] = \"\\\n-git-pack-objects [{ -q | --progress | --all-progress }] \\n\\\n-\t[--local] [--incremental] [--window=N] [--depth=N] \\n\\\n+git-pack-objects [{ -q | --progress | --all-progress }] [--pack-limit[=N]]\\n\\\n+\t[--blob-limit=N] [--local] [--incremental] [--window=N] [--depth=N]\\n\\\n \t[--no-reuse-delta] [--delta-base-offset] [--non-empty] \\n\\\n \t[--revs [--unpacked | --all]*] [--reflog] [--stdout | base-name] \\n\\\n \t[<ref-list | <object-list]\";\n@@ -1686,6 +1686,7 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)\n \tconst char **rp_av;\n \tint rp_ac_alloc = 64;\n \tint rp_ac;\n+\tint added = 0;\n \n \trp_av = xcalloc(rp_ac_alloc, sizeof(*rp_av));\n \n@@ -1714,6 +1715,24 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)\n \t\t\tincremental = 1;\n \t\t\tcontinue;\n \t\t}\n+\t\tif (!strcmp(\"--pack-limit\", arg)) {\n+\t\t\toffset_limit = 1UL << 31;\n+\t\t\tcontinue;\n+\t\t}\n+\t\tif (!prefixcmp(arg, \"--pack-limit=\")) {\n+\t\t\tchar *end;\n+\t\t\toffset_limit = strtoul(arg+13, &end, 0);\n+\t\t\tif (!arg[13] || *end)\n+\t\t\t\tusage(pack_usage);\n+\t\t\tcontinue;\n+\t\t}\n+\t\tif (!prefixcmp(arg, \"--blob-limit=\")) {\n+\t\t\tchar *end;\n+\t\t\tblob_limit = strtoul(arg+13, &end, 0);\n+\t\t\tif (!arg[13] || *end)\n+\t\t\t\tusage(pack_usage);\n+\t\t\tcontinue;\n+\t\t}\n \t\tif (!prefixcmp(arg, \"--window=\")) {\n \t\t\tchar *end;\n \t\t\twindow = strtoul(arg+9, &end, 0);\n@@ -1777,6 +1796,24 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)\n \t\t}\n \t\tusage(pack_usage);\n \t}\n+\tif ( offset_limit && !blob_limit && !pack_to_stdout ) {\n+\t\t/* need to limit blob size when creating bounded packs on disk */\n+\t\tblob_limit = offset_limit >> 2;\n+\t\tadded |= 2;\n+\t}\n+\tif ( offset_limit && !no_reuse_delta ) {\n+\t\t/* didn't audit this case yet */\n+\t\tno_reuse_delta = 1;\n+\t\tadded |= 1;\n+\t}\n+\tif ( added ) {\n+\t\tfprintf(stderr, \"Added to command line:\");\n+\t\tif ( added & 1 )\n+\t\t\tfprintf(stderr, \" --no-reuse-delta\");\n+\t\tif ( added & 2 )\n+\t\t\tfprintf(stderr, \" --blob-limit=%u\", blob_limit);\n+\t\tfprintf(stderr, \"\\n\");\n+\t}\n \n \t/* Traditionally \"pack-objects [options] base extra\" failed;\n \t * we would however want to take refs parameter that would\ndiff --git a/git-repack.sh b/git-repack.sh\nindex ddfa8b4..0299ff1 100755\n--- a/git-repack.sh\n+++ b/git-repack.sh\n@@ -18,6 +18,9 @@ do\n \t-q)\tquiet=-q ;;\n \t-f)\tno_reuse_delta=--no-reuse-delta ;;\n \t-l)\tlocal=--local ;;\n+\t--pack-limit) extra=\"$extra $1\" ;;\n+\t--pack-limit=*) extra=\"$extra $1\" ;;\n+\t--blob-limit=*) extra=\"$extra $1\" ;;\n \t--window=*) extra=\"$extra $1\" ;;\n \t--depth=*) extra=\"$extra $1\" ;;\n \t*)\tusage ;;\n@@ -62,11 +65,12 @@ case \",$all_into_one,\" in\n esac\n \n args=\"$args $local $quiet $no_reuse_delta$extra\"\n-name=$(git-pack-objects --non-empty --all --reflog $args </dev/null \"$PACKTMP\") ||\n+names=$(git-pack-objects --non-empty --all --reflog $args </dev/null \"$PACKTMP\") ||\n \texit 1\n-if [ -z \"$name\" ]; then\n+if [ -z \"$names\" ]; then\n \techo Nothing new to pack.\n-else\n+fi\n+for name in $names ; do\n \tchmod a-w \"$PACKTMP-$name.pack\"\n \tchmod a-w \"$PACKTMP-$name.idx\"\n \tif test \"$quiet\" != '-q'; then\n@@ -92,7 +96,7 @@ else\n \t\texit 1\n \t}\n \trm -f \"$PACKDIR/old-pack-$name.pack\" \"$PACKDIR/old-pack-$name.idx\"\n-fi\n+done\n \n if test \"$remove_redundant\" = t\n then\n-- \n1.5.1.rc2.18.g9c88-dirty\n\n"}]}