Sync with Git 2.20.1
* maint: Git 2.20.1 .gitattributes: ensure t/oid-info/* has eol=lf t9902: 'send-email' test case requires PERL t4256: mark support files as LF-only parse-options: fix SunCC compiler warning help -a: handle aliases with long names gracefully help.h: fix coding style run-command: report exec failuremaint
						commit
						b21ebb671b
					
				|  | @ -9,6 +9,7 @@ | |||
| /command-list.txt eol=lf | ||||
| /GIT-VERSION-GEN eol=lf | ||||
| /mergetools/* eol=lf | ||||
| /t/oid-info/* eol=lf | ||||
| /Documentation/git-merge.txt conflict-marker-size=32 | ||||
| /Documentation/gitk.txt conflict-marker-size=32 | ||||
| /Documentation/user-manual.txt conflict-marker-size=32 | ||||
|  |  | |||
|  | @ -0,0 +1,20 @@ | |||
| Git v2.20.1 Release Notes | ||||
| ========================= | ||||
|  | ||||
| This release is primarily to fix brown-paper-bag breakages in the | ||||
| 2.20.0 release. | ||||
|  | ||||
| Fixes since v2.20 | ||||
| ----------------- | ||||
|  | ||||
|  * A few newly added tests were not portable and caused minority | ||||
|    platforms to report false breakages, which have been fixed. | ||||
|  | ||||
|  * Portability fix for a recent update to parse-options API. | ||||
|  | ||||
|  * "git help -a" did not work well when an overly long alias is | ||||
|    defined, which has been corrected. | ||||
|  | ||||
|  * A recent update accidentally squelched an error message when the | ||||
|    run_command API failed to run a missing command, which has been | ||||
|    corrected. | ||||
|  | @ -850,6 +850,8 @@ int cmd_blame(int argc, const char **argv, const char *prefix) | |||
| 		case PARSE_OPT_HELP: | ||||
| 		case PARSE_OPT_ERROR: | ||||
| 			exit(129); | ||||
| 		case PARSE_OPT_COMPLETE: | ||||
| 			exit(0); | ||||
| 		case PARSE_OPT_DONE: | ||||
| 			if (ctx.argv[0]) | ||||
| 				dashdash_pos = ctx.cpidx; | ||||
|  |  | |||
|  | @ -287,6 +287,8 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix) | |||
| 		case PARSE_OPT_HELP: | ||||
| 		case PARSE_OPT_ERROR: | ||||
| 			exit(129); | ||||
| 		case PARSE_OPT_COMPLETE: | ||||
| 			exit(0); | ||||
| 		case PARSE_OPT_DONE: | ||||
| 			goto parse_done; | ||||
| 		} | ||||
|  |  | |||
|  | @ -1086,6 +1086,8 @@ int cmd_update_index(int argc, const char **argv, const char *prefix) | |||
| 		case PARSE_OPT_HELP: | ||||
| 		case PARSE_OPT_ERROR: | ||||
| 			exit(129); | ||||
| 		case PARSE_OPT_COMPLETE: | ||||
| 			exit(0); | ||||
| 		case PARSE_OPT_NON_OPTION: | ||||
| 		case PARSE_OPT_DONE: | ||||
| 		{ | ||||
|  |  | |||
							
								
								
									
										10
									
								
								help.c
								
								
								
								
							
							
						
						
									
										10
									
								
								help.c
								
								
								
								
							|  | @ -83,8 +83,9 @@ static void print_command_list(const struct cmdname_help *cmds, | |||
|  | ||||
| 	for (i = 0; cmds[i].name; i++) { | ||||
| 		if (cmds[i].category & mask) { | ||||
| 			size_t len = strlen(cmds[i].name); | ||||
| 			printf("   %s   ", cmds[i].name); | ||||
| 			mput_char(' ', longest - strlen(cmds[i].name)); | ||||
| 			mput_char(' ', longest > len ? longest - len : 1); | ||||
| 			puts(_(cmds[i].help)); | ||||
| 		} | ||||
| 	} | ||||
|  | @ -526,6 +527,13 @@ void list_all_cmds_help(void) | |||
|  | ||||
| 	git_config(get_alias, &alias_list); | ||||
| 	string_list_sort(&alias_list); | ||||
|  | ||||
| 	for (i = 0; i < alias_list.nr; i++) { | ||||
| 		size_t len = strlen(alias_list.items[i].string); | ||||
| 		if (longest < len) | ||||
| 			longest = len; | ||||
| 	} | ||||
|  | ||||
| 	if (alias_list.nr) { | ||||
| 		printf("\n%s\n", _("Command aliases")); | ||||
| 		ALLOC_ARRAY(aliases, alias_list.nr + 1); | ||||
|  |  | |||
							
								
								
									
										2
									
								
								help.h
								
								
								
								
							
							
						
						
									
										2
									
								
								help.h
								
								
								
								
							|  | @ -15,7 +15,7 @@ struct cmdnames { | |||
|  | ||||
| static inline void mput_char(char c, unsigned int num) | ||||
| { | ||||
| 	while(num--) | ||||
| 	while (num--) | ||||
| 		putchar(c); | ||||
| } | ||||
|  | ||||
|  |  | |||
|  | @ -516,7 +516,7 @@ static int show_gitcomp(struct parse_opt_ctx_t *ctx, | |||
| 	show_negated_gitcomp(original_opts, -1); | ||||
| 	show_negated_gitcomp(original_opts, nr_noopts); | ||||
| 	fputc('\n', stdout); | ||||
| 	exit(0); | ||||
| 	return PARSE_OPT_COMPLETE; | ||||
| } | ||||
|  | ||||
| static int usage_with_options_internal(struct parse_opt_ctx_t *, | ||||
|  | @ -638,6 +638,8 @@ int parse_options(int argc, const char **argv, const char *prefix, | |||
| 	case PARSE_OPT_HELP: | ||||
| 	case PARSE_OPT_ERROR: | ||||
| 		exit(129); | ||||
| 	case PARSE_OPT_COMPLETE: | ||||
| 		exit(0); | ||||
| 	case PARSE_OPT_NON_OPTION: | ||||
| 	case PARSE_OPT_DONE: | ||||
| 		break; | ||||
|  |  | |||
|  | @ -208,6 +208,7 @@ extern int opterror(const struct option *opt, const char *reason, int flags); | |||
| /*----- incremental advanced APIs -----*/ | ||||
|  | ||||
| enum { | ||||
| 	PARSE_OPT_COMPLETE = -2, | ||||
| 	PARSE_OPT_HELP = -1, | ||||
| 	PARSE_OPT_DONE, | ||||
| 	PARSE_OPT_NON_OPTION, | ||||
|  |  | |||
|  | @ -728,6 +728,8 @@ fail_pipe: | |||
| 	if (prepare_cmd(&argv, cmd) < 0) { | ||||
| 		failed_errno = errno; | ||||
| 		cmd->pid = -1; | ||||
| 		if (!cmd->silent_exec_failure) | ||||
| 			error_errno("cannot run %s", cmd->argv[0]); | ||||
| 		goto end_of_spawn; | ||||
| 	} | ||||
|  | ||||
|  |  | |||
|  | @ -16,6 +16,7 @@ t[0-9][0-9][0-9][0-9]/* -whitespace | |||
| /t4135/* eol=lf | ||||
| /t4211/* eol=lf | ||||
| /t4252/* eol=lf | ||||
| /t4256/1/* eol=lf | ||||
| /t5100/* eol=lf | ||||
| /t5515/* eol=lf | ||||
| /t556x_common eol=lf | ||||
|  |  | |||
|  | @ -13,11 +13,13 @@ cat >hello-script <<-EOF | |||
| EOF | ||||
|  | ||||
| test_expect_success 'start_command reports ENOENT (slash)' ' | ||||
| 	test-tool run-command start-command-ENOENT ./does-not-exist | ||||
| 	test-tool run-command start-command-ENOENT ./does-not-exist 2>err && | ||||
| 	test_i18ngrep "\./does-not-exist" err | ||||
| ' | ||||
|  | ||||
| test_expect_success 'start_command reports ENOENT (no slash)' ' | ||||
| 	test-tool run-command start-command-ENOENT does-not-exist | ||||
| 	test-tool run-command start-command-ENOENT does-not-exist 2>err && | ||||
| 	test_i18ngrep "does-not-exist" err | ||||
| ' | ||||
|  | ||||
| test_expect_success 'run_command can run a command' ' | ||||
|  | @ -33,7 +35,8 @@ test_expect_success 'run_command is restricted to PATH' ' | |||
| 	write_script should-not-run <<-\EOF && | ||||
| 	echo yikes | ||||
| 	EOF | ||||
| 	test_must_fail test-tool run-command run-command should-not-run | ||||
| 	test_must_fail test-tool run-command run-command should-not-run 2>err && | ||||
| 	test_i18ngrep "should-not-run" err | ||||
| ' | ||||
|  | ||||
| test_expect_success !MINGW 'run_command can run a script without a #! line' ' | ||||
|  |  | |||
|  | @ -1539,7 +1539,7 @@ test_expect_success 'complete tree filename with metacharacters' ' | |||
| 	EOF | ||||
| ' | ||||
|  | ||||
| test_expect_success 'send-email' ' | ||||
| test_expect_success PERL 'send-email' ' | ||||
| 	test_completion "git send-email --cov" "--cover-letter " && | ||||
| 	test_completion "git send-email ma" "master " | ||||
| ' | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Junio C Hamano
						Junio C Hamano