I've been working on http-pull, and I've made it able to download the target commit from ...git/refs/<dir>/<name> (instead of making you figure it out yourself), and also write the target it looks up to your local .git/refs/<w-d>/<w-n> (which doesn't have to be at all related to the source one. In fact, I just got the latest Linus tree with:
git-http-pull -t -w heads/linus heads/master \ http://www.kernel.org/pub/scm/git/git.git/ git-read-tree $(cat .git/refs/heads/linus) git-checkout-cache -a git-update-cache --refresh
(and I didn't get any of the history, although I could have if I wanted to; and I could get it now if I decided I needed it).
My question is, where does this belong? It's based on adding to the core as it has been the knowledge that .git/refs/*/* consists of hex-format hash files, both locally and on remote servers. I think this level of information belongs in the plumbing; at least, if people are to be able to use different git-based systems to access the same repositories, they have to agree. And there seems to be that much agreement, and so it makes sense to make it part of the core.
(For that matter, people seem to agree that refs/heads/ has heads, and refs/heads/master is the one you want to pull if you don't know otherwise; I didn't include this information at all)
-Daniel *This .sig left intentionally blank*