fetch-pack: parse and advertise the object-format capability
Parse the server's object-format capability and respond accordingly, dying if there is a mismatch. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									9dc78c20dc
								
							
						
					
					
						commit
						4b831208bb
					
				
							
								
								
									
										12
									
								
								fetch-pack.c
								
								
								
								
							
							
						
						
									
										12
									
								
								fetch-pack.c
								
								
								
								
							|  | @ -1179,6 +1179,7 @@ static int send_fetch_request(struct fetch_negotiator *negotiator, int fd_out, | |||
| 			      int sideband_all, int seen_ack) | ||||
| { | ||||
| 	int ret = 0; | ||||
| 	const char *hash_name; | ||||
| 	struct strbuf req_buf = STRBUF_INIT; | ||||
|  | ||||
| 	if (server_supports_v2("fetch", 1)) | ||||
|  | @ -1193,6 +1194,17 @@ static int send_fetch_request(struct fetch_negotiator *negotiator, int fd_out, | |||
| 					 args->server_options->items[i].string); | ||||
| 	} | ||||
|  | ||||
| 	if (server_feature_v2("object-format", &hash_name)) { | ||||
| 		int hash_algo = hash_algo_by_name(hash_name); | ||||
| 		if (hash_algo_by_ptr(the_hash_algo) != hash_algo) | ||||
| 			die(_("mismatched algorithms: client %s; server %s"), | ||||
| 			    the_hash_algo->name, hash_name); | ||||
| 		packet_write_fmt(fd_out, "object-format=%s", the_hash_algo->name); | ||||
| 	} else if (hash_algo_by_ptr(the_hash_algo) != GIT_HASH_SHA1) { | ||||
| 		die(_("the server does not support algorithm '%s'"), | ||||
| 		    the_hash_algo->name); | ||||
| 	} | ||||
|  | ||||
| 	packet_buf_delim(&req_buf); | ||||
| 	if (args->use_thin_pack) | ||||
| 		packet_buf_write(&req_buf, "thin-pack"); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 brian m. carlson
						brian m. carlson