upload-pack: send shallow info over stdin to pack-objects
[gitweb.git] / builtin / pack-objects.c
index 541667f1026d7ba62be8e029c31138d5661f65c7..c2c093a33e013dd394c2485a6a281bb220d62fcb 100644 (file)
@@ -2358,6 +2358,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')
@@ -2369,6 +2372,13 @@ static void get_object_list(int ac, const char **av)
                                flags ^= UNINTERESTING;
                                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))