grep: prepare to run outside of a work tree
This moves the call to setup_git_directory() for running "grep" from the "git" wrapper to the implementation of the "grep" subcommand. A new variable "use_index" is always true at this stage in the series, and when it is on, we require that we are in a directory that is under git control. To make sure we die the same way, we make a second call into setup_git_directory() when we detect this situation. Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									885d211e71
								
							
						
					
					
						commit
						7e622650d7
					
				|  | @ -414,6 +414,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix) | |||
| 	const char **paths = NULL; | ||||
| 	int i; | ||||
| 	int dummy; | ||||
| 	int nongit = 0, use_index = 1; | ||||
| 	struct option options[] = { | ||||
| 		OPT_BOOLEAN(0, "cached", &cached, | ||||
| 			"search in index instead of in the work tree"), | ||||
|  | @ -497,6 +498,8 @@ int cmd_grep(int argc, const char **argv, const char *prefix) | |||
| 		OPT_END() | ||||
| 	}; | ||||
|  | ||||
| 	prefix = setup_git_directory_gently(&nongit); | ||||
|  | ||||
| 	/* | ||||
| 	 * 'git grep -h', unlike 'git grep -h <pattern>', is a request | ||||
| 	 * to show usage information and exit. | ||||
|  | @ -534,6 +537,10 @@ int cmd_grep(int argc, const char **argv, const char *prefix) | |||
| 			     PARSE_OPT_STOP_AT_NON_OPTION | | ||||
| 			     PARSE_OPT_NO_INTERNAL_HELP); | ||||
|  | ||||
| 	if (use_index && nongit) | ||||
| 		/* die the same way as if we did it at the beginning */ | ||||
| 		setup_git_directory(); | ||||
|  | ||||
| 	/* First unrecognized non-option token */ | ||||
| 	if (argc > 0 && !opt.pattern_list) { | ||||
| 		append_grep_pattern(&opt, argv[0], "command line", 0, | ||||
|  |  | |||
							
								
								
									
										2
									
								
								git.c
								
								
								
								
							
							
						
						
									
										2
									
								
								git.c
								
								
								
								
							|  | @ -317,7 +317,7 @@ static void handle_internal_command(int argc, const char **argv) | |||
| 		{ "fsck-objects", cmd_fsck, RUN_SETUP }, | ||||
| 		{ "gc", cmd_gc, RUN_SETUP }, | ||||
| 		{ "get-tar-commit-id", cmd_get_tar_commit_id }, | ||||
| 		{ "grep", cmd_grep, RUN_SETUP | USE_PAGER }, | ||||
| 		{ "grep", cmd_grep, USE_PAGER }, | ||||
| 		{ "help", cmd_help }, | ||||
| 		{ "init", cmd_init_db }, | ||||
| 		{ "init-db", cmd_init_db }, | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Junio C Hamano
						Junio C Hamano