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>
		
			
				
	
	
		
			27 lines
		
	
	
		
			609 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			609 B
		
	
	
	
		
			C
		
	
	
	
	
	
#include "git-compat-util.h"
 | 
						|
#include "fetch-negotiator.h"
 | 
						|
#include "negotiator/default.h"
 | 
						|
#include "negotiator/skipping.h"
 | 
						|
#include "negotiator/noop.h"
 | 
						|
#include "repository.h"
 | 
						|
 | 
						|
void fetch_negotiator_init(struct repository *r,
 | 
						|
			   struct fetch_negotiator *negotiator)
 | 
						|
{
 | 
						|
	prepare_repo_settings(r);
 | 
						|
	switch(r->settings.fetch_negotiation_algorithm) {
 | 
						|
	case FETCH_NEGOTIATION_SKIPPING:
 | 
						|
		skipping_negotiator_init(negotiator);
 | 
						|
		return;
 | 
						|
 | 
						|
	case FETCH_NEGOTIATION_NOOP:
 | 
						|
		noop_negotiator_init(negotiator);
 | 
						|
		return;
 | 
						|
 | 
						|
	case FETCH_NEGOTIATION_DEFAULT:
 | 
						|
	default:
 | 
						|
		default_negotiator_init(negotiator);
 | 
						|
		return;
 | 
						|
	}
 | 
						|
}
 |