bundle: fix exclusion of annotated tags
In commit c9a42c4 (bundle: allow rev-list options to exclude annotated tags, 2009-01-02), support for excluding annotated tags outside the specified date range was added. However, the wrong order of parameters was chosen when calling memchr(). Fix this by swapping the character to search for with the maximum length parameter. Also cover this behavior with an additional test. Signed-off-by: Lukas Fleischer <git@cryptocrack.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Lukas Fleischer committed
Aug 2, 2014 at 10:39 UTC
2c8544ab91812c264666c9feb335ce3091fa29c1
2 files changed
+6
-3
bundle.c
+2
-2
@@ -223,8 +223,8 @@ static int is_tag_in_date_range(struct object *tag, struct rev_info *revs)
223
line = memmem(buf, size, "\ntagger ", 8);
224
if (!line++)
225
return 1;
226
- lineend = memchr(line, buf + size - line, '\n');
227
- line = memchr(line, lineend ? lineend - line : buf + size - line, '>');
226
+ lineend = memchr(line, '\n', buf + size - line);
227
+ line = memchr(line, '>', lineend ? lineend - line : buf + size - line);
228
if (!line++)
229
return 1;
230
date = strtoul(line, NULL, 10);
t/t5704-bundle.sh
+4
-1
@@ -14,7 +14,10 @@ test_expect_success 'setup' '
14
git tag -d third
15
'
16
17
-test_expect_success 'tags can be excluded by rev-list options' '
17
+test_expect_success 'annotated tags can be excluded by rev-list options' '
18
+ git bundle create bundle --all --since=7.Apr.2005.15:14:00.-0700 &&
19
+ git ls-remote bundle > output &&
20
+ grep tag output &&
21
git bundle create bundle --all --since=7.Apr.2005.15:16:00.-0700 &&
22
git ls-remote bundle > output &&
23
! grep tag output