Merge branch 'mb/fetch-call-a-non-branch-a-ref' into maint
The report from "git fetch" said "new branch" even for a non branch ref. By Marc Branchaud * mb/fetch-call-a-non-branch-a-ref: fetch: describe new refs based on where it came from fetch: Give remote_ref to update_local_ref() as well
This commit is contained in:
		| @ -240,6 +240,7 @@ static int s_update_ref(const char *action, | ||||
|  | ||||
| static int update_local_ref(struct ref *ref, | ||||
| 			    const char *remote, | ||||
| 			    const struct ref *remote_ref, | ||||
| 			    struct strbuf *display) | ||||
| { | ||||
| 	struct commit *current = NULL, *updated; | ||||
| @ -293,13 +294,21 @@ static int update_local_ref(struct ref *ref, | ||||
| 		const char *msg; | ||||
| 		const char *what; | ||||
| 		int r; | ||||
| 		if (!strncmp(ref->name, "refs/tags/", 10)) { | ||||
| 		/* | ||||
| 		 * Nicely describe the new ref we're fetching. | ||||
| 		 * Base this on the remote's ref name, as it's | ||||
| 		 * more likely to follow a standard layout. | ||||
| 		 */ | ||||
| 		const char *name = remote_ref ? remote_ref->name : ""; | ||||
| 		if (!prefixcmp(name, "refs/tags/")) { | ||||
| 			msg = "storing tag"; | ||||
| 			what = _("[new tag]"); | ||||
| 		} | ||||
| 		else { | ||||
| 		} else if (!prefixcmp(name, "refs/heads/")) { | ||||
| 			msg = "storing head"; | ||||
| 			what = _("[new branch]"); | ||||
| 		} else { | ||||
| 			msg = "storing ref"; | ||||
| 			what = _("[new ref]"); | ||||
| 		} | ||||
|  | ||||
| 		if ((recurse_submodules != RECURSE_SUBMODULES_OFF) && | ||||
| @ -466,7 +475,7 @@ static int store_updated_refs(const char *raw_url, const char *remote_name, | ||||
|  | ||||
| 			strbuf_reset(¬e); | ||||
| 			if (ref) { | ||||
| 				rc |= update_local_ref(ref, what, ¬e); | ||||
| 				rc |= update_local_ref(ref, what, rm, ¬e); | ||||
| 				free(ref); | ||||
| 			} else | ||||
| 				strbuf_addf(¬e, "* %-*s %-*s -> FETCH_HEAD", | ||||
|  | ||||
| @ -162,6 +162,36 @@ test_expect_success 'fetch following tags' ' | ||||
|  | ||||
| ' | ||||
|  | ||||
| test_expect_success 'fetch uses remote ref names to describe new refs' ' | ||||
| 	cd "$D" && | ||||
| 	git init descriptive && | ||||
| 	( | ||||
| 		cd descriptive && | ||||
| 		git config remote.o.url .. && | ||||
| 		git config remote.o.fetch "refs/heads/*:refs/crazyheads/*" && | ||||
| 		git config --add remote.o.fetch "refs/others/*:refs/heads/*" && | ||||
| 		git fetch o | ||||
| 	) && | ||||
| 	git tag -a -m "Descriptive tag" descriptive-tag && | ||||
| 	git branch descriptive-branch && | ||||
| 	git checkout descriptive-branch && | ||||
| 	echo "Nuts" >crazy && | ||||
| 	git add crazy && | ||||
| 	git commit -a -m "descriptive commit" && | ||||
| 	git update-ref refs/others/crazy HEAD && | ||||
| 	( | ||||
| 		cd descriptive && | ||||
| 		git fetch o 2>actual && | ||||
| 		grep " -> refs/crazyheads/descriptive-branch$" actual | | ||||
| 		test_i18ngrep "new branch" && | ||||
| 		grep " -> descriptive-tag$" actual | | ||||
| 		test_i18ngrep "new tag" && | ||||
| 		grep " -> crazy$" actual | | ||||
| 		test_i18ngrep "new ref" | ||||
| 	) && | ||||
| 	git checkout master | ||||
| ' | ||||
|  | ||||
| test_expect_success 'fetch must not resolve short tag name' ' | ||||
|  | ||||
| 	cd "$D" && | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Junio C Hamano
					Junio C Hamano