Skip to content

Commit f80d922

Browse files
felipecgitster
authored andcommitted
fetch: fix regression with transport helpers
Commit e198b3a changed the behavior of fetch with regards to tags. Before, null oids where not ignored, now they are, regardless of whether the refs have been explicitly cleared or not. e198b3a (fetch: replace string-list used as a look-up table with a hashmap) When using a transport helper the oids can certainly be null. So now tags are ignored and fetching them is impossible. This patch fixes that by having a specific flag that is set only when we explicitly want to ignore the refs, restoring the original behavior. Signed-off-by: Felipe Contreras <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 9528b80 commit f80d922

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
lines changed

builtin/fetch.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@ static int will_fetch(struct ref **head, const unsigned char *sha1)
237237
struct refname_hash_entry {
238238
struct hashmap_entry ent; /* must be the first member */
239239
struct object_id oid;
240+
int ignore;
240241
char refname[FLEX_ARRAY];
241242
};
242243

@@ -287,7 +288,7 @@ static int refname_hash_exists(struct hashmap *map, const char *refname)
287288

288289
static void clear_item(struct refname_hash_entry *item)
289290
{
290-
oidclr(&item->oid);
291+
item->ignore = 1;
291292
}
292293

293294
static void find_non_local_tags(const struct ref *refs,
@@ -373,7 +374,7 @@ static void find_non_local_tags(const struct ref *refs,
373374
BUG("unseen remote ref?");
374375

375376
/* Unless we have already decided to ignore this item... */
376-
if (is_null_oid(&item->oid))
377+
if (item->ignore)
377378
continue;
378379

379380
rm = alloc_ref(item->refname);

t/t5801-remote-helpers.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ test_expect_success 'fetch url' '
301301
compare_refs server HEAD local FETCH_HEAD
302302
'
303303

304-
test_expect_failure 'fetch tag' '
304+
test_expect_success 'fetch tag' '
305305
(cd server &&
306306
git tag v1.0
307307
) &&

0 commit comments

Comments
 (0)