diff options
author | Jonathan Tan <jonathantanmy@google.com> | 2020-08-18 06:01:31 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-08-18 22:25:05 +0200 |
commit | cbe566a0710b39691ca8f6cb6a764f6c553cd97b (patch) | |
tree | 19e21e913737a6ad6d6c0137411b05d7bf5c8bd8 /negotiator/noop.c | |
parent | fetch: optionally allow disabling FETCH_HEAD update (diff) | |
download | git-cbe566a0710b39691ca8f6cb6a764f6c553cd97b.tar.xz git-cbe566a0710b39691ca8f6cb6a764f6c553cd97b.zip |
negotiator/noop: add noop fetch negotiator
Add a noop fetch negotiator. This is introduced to allow partial clones
to skip the unneeded negotiation step when fetching missing objects
using a "git fetch" subprocess. (The implementation of spawning a "git
fetch" subprocess will be done in a subsequent patch.) But this can also
be useful for end users, e.g. as a blunt fix for object corruption.
Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'negotiator/noop.c')
-rw-r--r-- | negotiator/noop.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/negotiator/noop.c b/negotiator/noop.c new file mode 100644 index 0000000000..60569b8350 --- /dev/null +++ b/negotiator/noop.c @@ -0,0 +1,44 @@ +#include "cache.h" +#include "noop.h" +#include "../commit.h" +#include "../fetch-negotiator.h" + +static void known_common(struct fetch_negotiator *n, struct commit *c) +{ + /* do nothing */ +} + +static void add_tip(struct fetch_negotiator *n, struct commit *c) +{ + /* do nothing */ +} + +static const struct object_id *next(struct fetch_negotiator *n) +{ + return NULL; +} + +static int ack(struct fetch_negotiator *n, struct commit *c) +{ + /* + * This negotiator does not emit any commits, so there is no commit to + * be acknowledged. If there is any ack, there is a bug. + */ + BUG("ack with noop negotiator, which does not emit any commits"); + return 0; +} + +static void release(struct fetch_negotiator *n) +{ + /* nothing to release */ +} + +void noop_negotiator_init(struct fetch_negotiator *negotiator) +{ + negotiator->known_common = known_common; + negotiator->add_tip = add_tip; + negotiator->next = next; + negotiator->ack = ack; + negotiator->release = release; + negotiator->data = NULL; +} |