diff options
Diffstat (limited to 'third_party/git/fetch-negotiator.c')
-rw-r--r-- | third_party/git/fetch-negotiator.c | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/third_party/git/fetch-negotiator.c b/third_party/git/fetch-negotiator.c index 0a1357dc9d55..d6d685cba012 100644 --- a/third_party/git/fetch-negotiator.c +++ b/third_party/git/fetch-negotiator.c @@ -2,20 +2,19 @@ #include "fetch-negotiator.h" #include "negotiator/default.h" #include "negotiator/skipping.h" -#include "repository.h" -void fetch_negotiator_init(struct repository *r, - struct fetch_negotiator *negotiator) +void fetch_negotiator_init(struct fetch_negotiator *negotiator, + const char *algorithm) { - prepare_repo_settings(r); - switch(r->settings.fetch_negotiation_algorithm) { - case FETCH_NEGOTIATION_SKIPPING: - skipping_negotiator_init(negotiator); - return; - - case FETCH_NEGOTIATION_DEFAULT: - default: - default_negotiator_init(negotiator); - return; + if (algorithm) { + if (!strcmp(algorithm, "skipping")) { + skipping_negotiator_init(negotiator); + return; + } else if (!strcmp(algorithm, "default")) { + /* Fall through to default initialization */ + } else { + die("unknown fetch negotiation algorithm '%s'", algorithm); + } } + default_negotiator_init(negotiator); } |