Skip to content

Commit 59b19bc

Browse files
committed
Merge branch 'cc/multi-promisor'
Cleanup. * cc/multi-promisor: promisor-remote: skip move_to_tail when no-op promisor-remote.h: drop extern from function declaration
2 parents 1f4485b + 65904b8 commit 59b19bc

File tree

3 files changed

+23
-7
lines changed

3 files changed

+23
-7
lines changed

promisor-remote.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,9 @@ static struct promisor_remote *promisor_remote_lookup(const char *remote_name,
8989
static void promisor_remote_move_to_tail(struct promisor_remote *r,
9090
struct promisor_remote *previous)
9191
{
92+
if (r->next == NULL)
93+
return;
94+
9295
if (previous)
9396
previous->next = r->next;
9497
else

promisor-remote.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,17 @@ struct promisor_remote {
1515
const char name[FLEX_ARRAY];
1616
};
1717

18-
extern void promisor_remote_reinit(void);
19-
extern struct promisor_remote *promisor_remote_find(const char *remote_name);
20-
extern int has_promisor_remote(void);
21-
extern int promisor_remote_get_direct(struct repository *repo,
22-
const struct object_id *oids,
23-
int oid_nr);
18+
void promisor_remote_reinit(void);
19+
struct promisor_remote *promisor_remote_find(const char *remote_name);
20+
int has_promisor_remote(void);
21+
int promisor_remote_get_direct(struct repository *repo,
22+
const struct object_id *oids,
23+
int oid_nr);
2424

2525
/*
2626
* This should be used only once from setup.c to set the value we got
2727
* from the extensions.partialclone config option.
2828
*/
29-
extern void set_repository_format_partial_clone(char *partial_clone);
29+
void set_repository_format_partial_clone(char *partial_clone);
3030

3131
#endif /* PROMISOR_REMOTE_H */

t/t0410-partial-clone.sh

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,19 @@ test_expect_success 'rev-list dies for missing objects on cmd line' '
429429
done
430430
'
431431

432+
test_expect_success 'single promisor remote can be re-initialized gracefully' '
433+
# ensure one promisor is in the promisors list
434+
rm -rf repo &&
435+
test_create_repo repo &&
436+
test_create_repo other &&
437+
git -C repo remote add foo "file://$(pwd)/other" &&
438+
git -C repo config remote.foo.promisor true &&
439+
git -C repo config extensions.partialclone foo &&
440+
441+
# reinitialize the promisors list
442+
git -C repo fetch --filter=blob:none foo
443+
'
444+
432445
test_expect_success 'gc repacks promisor objects separately from non-promisor objects' '
433446
rm -rf repo &&
434447
test_create_repo repo &&

0 commit comments

Comments
 (0)