What's in git.git tonight
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:42:15
Since 0.99.9n, there have been a couple of fixes and some documentation updates. One notable is that we do not allow '?', '*' and '[' in ref names anymore --- this was done after the list discussion with Pasky and friends. Another notable is "We do not like HEAD branch" patch, but I've been thinking seriously about reverting it and replace its effect by also reverting the misguided attempt to disambiguate branch names and tag names. This patch with a commit message will follow in a separate message; it currently lives in the proposed updates branch. One positive effect this change brings is that it fixes a corner case bug/confusion Johannes mentioned the other day while diagnosing the trouble Len had with his repository (I do not think the problem has anything to do with Len's trouble, though). If you have a branch called "dead", and you also have a tag called "dead", and if your repository has only one object whose name begins with "dead" (e.g. "deadbeef1234..."), "git rev-parse --verify dead" would pick up the "deadbeef1234..." object, not "dead" tag nor "dead" head. When no such object exists, "git rev-parse --verify dead" fails, saying "dead" is ambiguous between heads and tags. This is just confused, and "reverting the misguided disambiguation" change will make it pick up the "dead" tag in either case. Most likely I'll have it in "master" after further testing over the weekend. One important patch waiting in the proposed updates is to give an option to git-fetch-pack to keep the downloaded pack without unpacking it; this was primarily done to help Cogito, but I haven't heard back about it from Pasky yet. The primary difference between this and the clone-pack change that is already in the master branch, from the user's point of view, is that git-fetch-pack can be efficiently used in an already populated repository [*1*]. Imagine cloning "master" branch from linux-2.6 repository of Linus, and then fetching ALL branch from libata-dev repository of Jeff --- the difference is large enough that you would want to keep the downloaded stuff packed, while you do want to take advantage of the fact that you already have objects from Linus. Currently it saves exploding about a ~800K pack with 1100 objects in it. Although I mentioned we are supposed to be in deep feature freeze, I feel it is worth to have this one in 1.0. [Footnote] *1* Theoretically we could deprecate git-clone-pack and use git-fetch-pack exclusively, if we are willing to create refs matching what the remote has in the wrapper script git-clone.