convert report_path_error to take struct pathspec
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									18e4f40599
								
							
						
					
					
						commit
						17ddc66e70
					
				|  | @ -304,7 +304,7 @@ static int checkout_paths(const struct checkout_opts *opts, | |||
| 			ce->ce_flags |= CE_MATCHED; | ||||
| 	} | ||||
|  | ||||
| 	if (report_path_error(ps_matched, opts->pathspec.raw, opts->prefix)) { | ||||
| 	if (report_path_error(ps_matched, &opts->pathspec, opts->prefix)) { | ||||
| 		free(ps_matched); | ||||
| 		return 1; | ||||
| 	} | ||||
|  |  | |||
|  | @ -188,20 +188,18 @@ static int commit_index_files(void) | |||
|  * and return the paths that match the given pattern in list. | ||||
|  */ | ||||
| static int list_paths(struct string_list *list, const char *with_tree, | ||||
| 		      const char *prefix, const char **pattern) | ||||
| 		      const char *prefix, const struct pathspec *pattern) | ||||
| { | ||||
| 	int i; | ||||
| 	char *m; | ||||
|  | ||||
| 	if (!pattern) | ||||
| 	if (!pattern->nr) | ||||
| 		return 0; | ||||
|  | ||||
| 	for (i = 0; pattern[i]; i++) | ||||
| 		; | ||||
| 	m = xcalloc(1, i); | ||||
| 	m = xcalloc(1, pattern->nr); | ||||
|  | ||||
| 	if (with_tree) { | ||||
| 		char *max_prefix = common_prefix(pattern); | ||||
| 		char *max_prefix = common_prefix(pattern->raw); | ||||
| 		overlay_tree_on_cache(with_tree, max_prefix ? max_prefix : prefix); | ||||
| 		free(max_prefix); | ||||
| 	} | ||||
|  | @ -212,7 +210,7 @@ static int list_paths(struct string_list *list, const char *with_tree, | |||
|  | ||||
| 		if (ce->ce_flags & CE_UPDATE) | ||||
| 			continue; | ||||
| 		if (!match_pathspec(pattern, ce->name, ce_namelen(ce), 0, m)) | ||||
| 		if (!match_pathspec_depth(pattern, ce->name, ce_namelen(ce), 0, m)) | ||||
| 			continue; | ||||
| 		item = string_list_insert(list, ce->name); | ||||
| 		if (ce_skip_worktree(ce)) | ||||
|  | @ -402,7 +400,7 @@ static char *prepare_index(int argc, const char **argv, const char *prefix, | |||
|  | ||||
| 	memset(&partial, 0, sizeof(partial)); | ||||
| 	partial.strdup_strings = 1; | ||||
| 	if (list_paths(&partial, !current_head ? NULL : "HEAD", prefix, pathspec.raw)) | ||||
| 	if (list_paths(&partial, !current_head ? NULL : "HEAD", prefix, &pathspec)) | ||||
| 		exit(1); | ||||
|  | ||||
| 	discard_cache(); | ||||
|  |  | |||
|  | @ -346,15 +346,16 @@ void overlay_tree_on_cache(const char *tree_name, const char *prefix) | |||
| 	} | ||||
| } | ||||
|  | ||||
| int report_path_error(const char *ps_matched, const char **pathspec, const char *prefix) | ||||
| int report_path_error(const char *ps_matched, | ||||
| 		      const struct pathspec *pathspec, | ||||
| 		      const char *prefix) | ||||
| { | ||||
| 	/* | ||||
| 	 * Make sure all pathspec matched; otherwise it is an error. | ||||
| 	 */ | ||||
| 	struct strbuf sb = STRBUF_INIT; | ||||
| 	const char *name; | ||||
| 	int num, errors = 0; | ||||
| 	for (num = 0; pathspec[num]; num++) { | ||||
| 	for (num = 0; num < pathspec->nr; num++) { | ||||
| 		int other, found_dup; | ||||
|  | ||||
| 		if (ps_matched[num]) | ||||
|  | @ -362,13 +363,16 @@ int report_path_error(const char *ps_matched, const char **pathspec, const char | |||
| 		/* | ||||
| 		 * The caller might have fed identical pathspec | ||||
| 		 * twice.  Do not barf on such a mistake. | ||||
| 		 * FIXME: parse_pathspec should have eliminated | ||||
| 		 * duplicate pathspec. | ||||
| 		 */ | ||||
| 		for (found_dup = other = 0; | ||||
| 		     !found_dup && pathspec[other]; | ||||
| 		     !found_dup && other < pathspec->nr; | ||||
| 		     other++) { | ||||
| 			if (other == num || !ps_matched[other]) | ||||
| 				continue; | ||||
| 			if (!strcmp(pathspec[other], pathspec[num])) | ||||
| 			if (!strcmp(pathspec->items[other].original, | ||||
| 				    pathspec->items[num].original)) | ||||
| 				/* | ||||
| 				 * Ok, we have a match already. | ||||
| 				 */ | ||||
|  | @ -377,9 +381,8 @@ int report_path_error(const char *ps_matched, const char **pathspec, const char | |||
| 		if (found_dup) | ||||
| 			continue; | ||||
|  | ||||
| 		name = quote_path_relative(pathspec[num], -1, &sb, prefix); | ||||
| 		error("pathspec '%s' did not match any file(s) known to git.", | ||||
| 		      name); | ||||
| 		      pathspec->items[num].original); | ||||
| 		errors++; | ||||
| 	} | ||||
| 	strbuf_release(&sb); | ||||
|  | @ -575,7 +578,7 @@ int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix) | |||
|  | ||||
| 	if (ps_matched) { | ||||
| 		int bad; | ||||
| 		bad = report_path_error(ps_matched, pathspec.raw, prefix); | ||||
| 		bad = report_path_error(ps_matched, &pathspec, prefix); | ||||
| 		if (bad) | ||||
| 			fprintf(stderr, "Did you forget to 'git add'?\n"); | ||||
|  | ||||
|  |  | |||
							
								
								
									
										2
									
								
								cache.h
								
								
								
								
							
							
						
						
									
										2
									
								
								cache.h
								
								
								
								
							|  | @ -1312,7 +1312,7 @@ extern int ws_blank_line(const char *line, int len, unsigned ws_rule); | |||
| #define ws_tab_width(rule)     ((rule) & WS_TAB_WIDTH_MASK) | ||||
|  | ||||
| /* ls-files */ | ||||
| int report_path_error(const char *ps_matched, const char **pathspec, const char *prefix); | ||||
| int report_path_error(const char *ps_matched, const struct pathspec *pathspec, const char *prefix); | ||||
| void overlay_tree_on_cache(const char *tree_name, const char *prefix); | ||||
|  | ||||
| char *alias_lookup(const char *alias); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Nguyễn Thái Ngọc Duy
						Nguyễn Thái Ngọc Duy