summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 8315588)
raw | patch | inline | side by side (parent: 8315588)
author | Johannes Schindelin <Johannes.Schindelin@gmx.de> | |
Wed, 7 Mar 2007 23:43:05 +0000 (00:43 +0100) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Thu, 8 Mar 2007 01:38:48 +0000 (17:38 -0800) |
When saying something like "--since=1.day.ago" or "--max-count=5",
git-bundle finds the boundary commits which are recorded as
prerequisites. However, it failed to tell pack-objects _not_ to
pack the objects which are in these.
Fix that. And add a test for that.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
git-bundle finds the boundary commits which are recorded as
prerequisites. However, it failed to tell pack-objects _not_ to
pack the objects which are in these.
Fix that. And add a test for that.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
builtin-bundle.c | patch | blob | history | |
t/t5510-fetch.sh | patch | blob | history |
diff --git a/builtin-bundle.c b/builtin-bundle.c
index 3b3bc2582d9ebed74e16bd2144b371b7884191c6..70d44791939ec4a2027f8dc2ec715cff48e43e16 100644 (file)
--- a/builtin-bundle.c
+++ b/builtin-bundle.c
/* write signature */
write_or_die(bundle_fd, bundle_signature, strlen(bundle_signature));
+ /* init revs to list objects for pack-objects later */
+ save_commit_buffer = 0;
+ init_revisions(&revs, NULL);
+
/* write prerequisites */
memcpy(argv_boundary + 3, argv + 1, argc * sizeof(const char *));
argv_boundary[0] = "rev-list";
if (pid < 0)
return -1;
while ((i = read_string(out, buffer, sizeof(buffer))) > 0)
- if (buffer[0] == '-')
+ if (buffer[0] == '-') {
+ unsigned char sha1[20];
write_or_die(bundle_fd, buffer, i);
+ if (!get_sha1_hex(buffer + 1, sha1)) {
+ struct object *object = parse_object(sha1);
+ object->flags |= UNINTERESTING;
+ add_pending_object(&revs, object, buffer);
+ }
+ }
while ((i = waitpid(pid, &status, 0)) < 0)
if (errno != EINTR)
return error("rev-list died");
return error("rev-list died %d", WEXITSTATUS(status));
/* write references */
- save_commit_buffer = 0;
- init_revisions(&revs, NULL);
revs.tag_objects = 1;
revs.tree_objects = 1;
revs.blob_objects = 1;
diff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh
index ad589dd0dfb857ea2596e57215cf4c6e0f608afc..ee3f397a9bf8d4a08c2f897f0ae094b8ea686344 100755 (executable)
--- a/t/t5510-fetch.sh
+++ b/t/t5510-fetch.sh
test "tip" = "$(git log -1 --pretty=oneline master | cut -b42-)"
'
+test_expect_success 'bundle does not prerequisite objects' '
+ cd "$D" &&
+ touch file2 &&
+ git add file2 &&
+ git commit -m add.file2 file2 &&
+ git bundle create bundle3 -1 HEAD &&
+ sed "1,4d" < bundle3 > bundle.pack &&
+ git index-pack bundle.pack &&
+ test 4 = $(git verify-pack -v bundle.pack | wc -l)
+'
+
test_done