Someone maybe like me is working in the way of following one central git repository while sometimes need to fetch some code or tags from a 3rd git repo, but unfortunately the 3rd repo may contain a lot of tags not all I want to fetch to mess up my local repo, at this time I want to fetch only one tag from the 3rd repo, but the syntax of `git fetch 3rd-repo the-tag-name` really fetched the code of the-tag-name from 3rd-repo, but forgot the tag itself; this patch enhanced the above syntax to create the tag itself; builtin/fetch.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/builtin/fetch.c b/builtin/fetch.c index bb9a074..9a3ec4a 100644 --- a/builtin/fetch.c +++ b/builtin/fetch.c @@ -439,6 +439,14 @@ static int store_updated_refs(const char *raw_url, const char *remote_name, else if (!prefixcmp(rm->name, "refs/tags/")) { kind = "tag"; what = rm->name + 10; + if (!ref) { + unsigned char sha1[20]; + ref = alloc_ref(rm->name); + hashcpy(ref->new_sha1, rm->old_sha1); + if (!get_sha1(rm->name, sha1)) + hashcpy(ref->old_sha1, sha1); + } } else if (!prefixcmp(rm->name, "refs/remotes/")) { kind = "remote-tracking branch"; -- cheng renquan (程任全) -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html