зеркало из https://github.com/microsoft/git.git
allow git-bundle to create bottomless bundle
While "git bundle" was a useful way to sneakernet incremental changes, we did not allow: $ git bundle create v2.6.20.bndl v2.6.20 to create a bundle that contains the whole history to a well-known good revision. Such a bundle can be mirrored everywhere, and people can prime their repository with it to reduce the load on the repository that serves near the tip of the development. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
d699676dda
Коммит
7fa8254f94
|
@ -208,6 +208,10 @@ static int create_bundle(struct bundle_header *header, const char *path,
|
|||
struct rev_info revs;
|
||||
struct child_process rls;
|
||||
|
||||
/*
|
||||
* NEEDSWORK: this should use something like lock-file
|
||||
* to create temporary that is cleaned up upon error.
|
||||
*/
|
||||
bundle_fd = (!strcmp(path, "-") ? 1 :
|
||||
open(path, O_CREAT | O_EXCL | O_WRONLY, 0666));
|
||||
if (bundle_fd < 0)
|
||||
|
@ -267,8 +271,12 @@ static int create_bundle(struct bundle_header *header, const char *path,
|
|||
* Make sure the refs we wrote out is correct; --max-count and
|
||||
* other limiting options could have prevented all the tips
|
||||
* from getting output.
|
||||
*
|
||||
* Non commit objects such as tags and blobs do not have
|
||||
* this issue as they are not affected by those extra
|
||||
* constraints.
|
||||
*/
|
||||
if (!(e->item->flags & SHOWN)) {
|
||||
if (!(e->item->flags & SHOWN) && e->item->type == OBJ_COMMIT) {
|
||||
warning("ref '%s' is excluded by the rev-list options",
|
||||
e->name);
|
||||
continue;
|
||||
|
|
|
@ -145,4 +145,12 @@ test_expect_success 'bundle does not prerequisite objects' '
|
|||
test 4 = $(git verify-pack -v bundle.pack | wc -l)
|
||||
'
|
||||
|
||||
test_expect_success 'bundle should be able to create a full history' '
|
||||
|
||||
cd "$D" &&
|
||||
git tag -a -m '1.0' v1.0 master &&
|
||||
git bundle create bundle4 v1.0
|
||||
|
||||
'
|
||||
|
||||
test_done
|
||||
|
|
Загрузка…
Ссылка в новой задаче