aboutsummaryrefslogtreecommitdiff
path: root/builtin/pack-objects.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2014-03-21 12:49:08 -0700
committerJunio C Hamano <gitster@pobox.com>2014-03-21 12:49:08 -0700
commit1ddb4d7e5ed478ec7a0335090482c1944a64aca5 (patch)
treef7d259210d2148375b7a59138f71d92b67d6196f /builtin/pack-objects.c
parent6dada01b95a48f8ea0eeec53d2eb4a8c894aff91 (diff)
parentb790e0f67cd97f29b72cb9007632b0329e5eebec (diff)
downloadgit-1ddb4d7e5ed478ec7a0335090482c1944a64aca5.tar.gz
git-1ddb4d7e5ed478ec7a0335090482c1944a64aca5.tar.xz
Merge branch 'nd/upload-pack-shallow'
Serving objects from a shallow repository needs to write a temporary file to be used, but the serving upload-pack may not have write access to the repository which is meant to be read-only. Instead feed these temporary shallow bounds from the standard input of pack-objects so that we do not have to use a temporary file. * nd/upload-pack-shallow: upload-pack: send shallow info over stdin to pack-objects
Diffstat (limited to 'builtin/pack-objects.c')
-rw-r--r--builtin/pack-objects.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c
index 61a55b3c7..0ee5f1ff9 100644
--- a/builtin/pack-objects.c
+++ b/builtin/pack-objects.c
@@ -2449,6 +2449,9 @@ static void get_object_list(int ac, const char **av)
save_commit_buffer = 0;
setup_revisions(ac, av, &revs, NULL);
+ /* make sure shallows are read */
+ is_repository_shallow();
+
while (fgets(line, sizeof(line), stdin) != NULL) {
int len = strlen(line);
if (len && line[len - 1] == '\n')
@@ -2461,6 +2464,13 @@ static void get_object_list(int ac, const char **av)
write_bitmap_index = 0;
continue;
}
+ if (starts_with(line, "--shallow ")) {
+ unsigned char sha1[20];
+ if (get_sha1_hex(line + 10, sha1))
+ die("not an SHA-1 '%s'", line + 10);
+ register_shallow(sha1);
+ continue;
+ }
die("not a rev '%s'", line);
}
if (handle_revision_arg(line, &revs, flags, REVARG_CANNOT_BE_FILENAME))