mirror of
https://github.com/git/git.git
synced 2024-10-19 15:18:24 +02:00
Merge branch 'js/bundle-tags'
* js/bundle-tags: bundle: allow rev-list options to exclude annotated tags
This commit is contained in:
commit
9735a44440
32
bundle.c
32
bundle.c
@ -167,6 +167,32 @@ int list_bundle_refs(struct bundle_header *header, int argc, const char **argv)
|
|||||||
return list_refs(&header->references, argc, argv);
|
return list_refs(&header->references, argc, argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int is_tag_in_date_range(struct object *tag, struct rev_info *revs)
|
||||||
|
{
|
||||||
|
unsigned long size;
|
||||||
|
enum object_type type;
|
||||||
|
char *buf, *line, *lineend;
|
||||||
|
unsigned long date;
|
||||||
|
|
||||||
|
if (revs->max_age == -1 && revs->min_age == -1)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
buf = read_sha1_file(tag->sha1, &type, &size);
|
||||||
|
if (!buf)
|
||||||
|
return 1;
|
||||||
|
line = memmem(buf, size, "\ntagger ", 8);
|
||||||
|
if (!line++)
|
||||||
|
return 1;
|
||||||
|
lineend = memchr(line, buf + size - line, '\n');
|
||||||
|
line = memchr(line, lineend ? lineend - line : buf + size - line, '>');
|
||||||
|
if (!line++)
|
||||||
|
return 1;
|
||||||
|
date = strtoul(line, NULL, 10);
|
||||||
|
free(buf);
|
||||||
|
return (revs->max_age == -1 || revs->max_age < date) &&
|
||||||
|
(revs->min_age == -1 || revs->min_age > date);
|
||||||
|
}
|
||||||
|
|
||||||
int create_bundle(struct bundle_header *header, const char *path,
|
int create_bundle(struct bundle_header *header, const char *path,
|
||||||
int argc, const char **argv)
|
int argc, const char **argv)
|
||||||
{
|
{
|
||||||
@ -255,6 +281,12 @@ int create_bundle(struct bundle_header *header, const char *path,
|
|||||||
flag = 0;
|
flag = 0;
|
||||||
display_ref = (flag & REF_ISSYMREF) ? e->name : ref;
|
display_ref = (flag & REF_ISSYMREF) ? e->name : ref;
|
||||||
|
|
||||||
|
if (e->item->type == OBJ_TAG &&
|
||||||
|
!is_tag_in_date_range(e->item, &revs)) {
|
||||||
|
e->item->flags |= UNINTERESTING;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Make sure the refs we wrote out is correct; --max-count and
|
* Make sure the refs we wrote out is correct; --max-count and
|
||||||
* other limiting options could have prevented all the tips
|
* other limiting options could have prevented all the tips
|
||||||
|
33
t/t5704-bundle.sh
Executable file
33
t/t5704-bundle.sh
Executable file
@ -0,0 +1,33 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
test_description='some bundle related tests'
|
||||||
|
. ./test-lib.sh
|
||||||
|
|
||||||
|
test_expect_success 'setup' '
|
||||||
|
|
||||||
|
: > file &&
|
||||||
|
git add file &&
|
||||||
|
test_tick &&
|
||||||
|
git commit -m initial &&
|
||||||
|
test_tick &&
|
||||||
|
git tag -m tag tag &&
|
||||||
|
: > file2 &&
|
||||||
|
git add file2 &&
|
||||||
|
: > file3 &&
|
||||||
|
test_tick &&
|
||||||
|
git commit -m second &&
|
||||||
|
git add file3 &&
|
||||||
|
test_tick &&
|
||||||
|
git commit -m third
|
||||||
|
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'tags can be excluded by rev-list options' '
|
||||||
|
|
||||||
|
git bundle create bundle --all --since=7.Apr.2005.15:16:00.-0700 &&
|
||||||
|
git ls-remote bundle > output &&
|
||||||
|
! grep tag output
|
||||||
|
|
||||||
|
'
|
||||||
|
|
||||||
|
test_done
|
Loading…
Reference in New Issue
Block a user