upload-pack.c: use parse-options API
Use the parse-options API rather than a hand-rolled option parser.
Description for --stateless-rpc and --advertise-refs come from
42526b4 (Add stateless RPC options to upload-pack,
receive-pack, 2009-10-30).
Signed-off-by: Antoine Queru <antoine.queru@grenoble-inp.org>
Signed-off-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
			
			
				maint
			
			
		
							parent
							
								
									f3913c2d03
								
							
						
					
					
						commit
						9812f2136b
					
				|  | @ -9,8 +9,8 @@ git-upload-pack - Send objects packed back to git-fetch-pack | |||
| SYNOPSIS | ||||
| -------- | ||||
| [verse] | ||||
| 'git-upload-pack' [--strict] [--timeout=<n>] <directory> | ||||
|  | ||||
| 'git-upload-pack' [--[no-]strict] [--timeout=<n>] [--stateless-rpc] | ||||
| 		  [--advertise-refs] <directory> | ||||
| DESCRIPTION | ||||
| ----------- | ||||
| Invoked by 'git fetch-pack', learns what | ||||
|  | @ -25,12 +25,22 @@ repository.  For push operations, see 'git send-pack'. | |||
| OPTIONS | ||||
| ------- | ||||
|  | ||||
| --strict:: | ||||
| --[no-]strict:: | ||||
| 	Do not try <directory>/.git/ if <directory> is no Git directory. | ||||
|  | ||||
| --timeout=<n>:: | ||||
| 	Interrupt transfer after <n> seconds of inactivity. | ||||
|  | ||||
| --stateless-rpc:: | ||||
| 	Perform only a single read-write cycle with stdin and stdout. | ||||
| 	This fits with the HTTP POST request processing model where | ||||
| 	a program may read the request, write a response, and must exit. | ||||
|  | ||||
| --advertise-refs:: | ||||
| 	Only the initial ref advertisement is output, and the program exits | ||||
| 	immediately. This fits with the HTTP GET request model, where | ||||
| 	no request content is received but a response must be produced. | ||||
|  | ||||
| <directory>:: | ||||
| 	The repository to sync from. | ||||
|  | ||||
|  |  | |||
|  | @ -14,8 +14,12 @@ | |||
| #include "sigchain.h" | ||||
| #include "version.h" | ||||
| #include "string-list.h" | ||||
| #include "parse-options.h" | ||||
|  | ||||
| static const char upload_pack_usage[] = "git upload-pack [--strict] [--timeout=<n>] <dir>"; | ||||
| static const char * const upload_pack_usage[] = { | ||||
| 	N_("git upload-pack [<options>] <dir>"), | ||||
| 	NULL | ||||
| }; | ||||
|  | ||||
| /* Remember to update object flag allocation in object.h */ | ||||
| #define THEY_HAVE	(1u << 11) | ||||
|  | @ -816,11 +820,21 @@ static int upload_pack_config(const char *var, const char *value, void *unused) | |||
| 	return parse_hide_refs_config(var, value, "uploadpack"); | ||||
| } | ||||
|  | ||||
| int main(int argc, char **argv) | ||||
| int main(int argc, const char **argv) | ||||
| { | ||||
| 	char *dir; | ||||
| 	int i; | ||||
| 	const char *dir; | ||||
| 	int strict = 0; | ||||
| 	struct option options[] = { | ||||
| 		OPT_BOOL(0, "stateless-rpc", &stateless_rpc, | ||||
| 			 N_("quit after a single request/response exchange")), | ||||
| 		OPT_BOOL(0, "advertise-refs", &advertise_refs, | ||||
| 			 N_("exit immediately after intial ref advertisement")), | ||||
| 		OPT_BOOL(0, "strict", &strict, | ||||
| 			 N_("do not try <directory>/.git/ if <directory> is no Git directory")), | ||||
| 		OPT_INTEGER(0, "timeout", &timeout, | ||||
| 			    N_("interrupt transfer after <n> seconds of inactivity")), | ||||
| 		OPT_END() | ||||
| 	}; | ||||
|  | ||||
| 	git_setup_gettext(); | ||||
|  | ||||
|  | @ -828,40 +842,17 @@ int main(int argc, char **argv) | |||
| 	git_extract_argv0_path(argv[0]); | ||||
| 	check_replace_refs = 0; | ||||
|  | ||||
| 	for (i = 1; i < argc; i++) { | ||||
| 		char *arg = argv[i]; | ||||
| 	argc = parse_options(argc, argv, NULL, options, upload_pack_usage, 0); | ||||
|  | ||||
| 		if (arg[0] != '-') | ||||
| 			break; | ||||
| 		if (!strcmp(arg, "--advertise-refs")) { | ||||
| 			advertise_refs = 1; | ||||
| 			continue; | ||||
| 		} | ||||
| 		if (!strcmp(arg, "--stateless-rpc")) { | ||||
| 			stateless_rpc = 1; | ||||
| 			continue; | ||||
| 		} | ||||
| 		if (!strcmp(arg, "--strict")) { | ||||
| 			strict = 1; | ||||
| 			continue; | ||||
| 		} | ||||
| 		if (starts_with(arg, "--timeout=")) { | ||||
| 			timeout = atoi(arg+10); | ||||
| 			daemon_mode = 1; | ||||
| 			continue; | ||||
| 		} | ||||
| 		if (!strcmp(arg, "--")) { | ||||
| 			i++; | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
| 	if (argc != 1) | ||||
| 		usage_with_options(upload_pack_usage, options); | ||||
|  | ||||
| 	if (i != argc-1) | ||||
| 		usage(upload_pack_usage); | ||||
| 	if (timeout) | ||||
| 		daemon_mode = 1; | ||||
|  | ||||
| 	setup_path(); | ||||
|  | ||||
| 	dir = argv[i]; | ||||
| 	dir = argv[0]; | ||||
|  | ||||
| 	if (!enter_repo(dir, strict)) | ||||
| 		die("'%s' does not appear to be a git repository", dir); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Antoine Queru
						Antoine Queru