On Thu, Jan 29, 2009 at 02:38:43PM +0100, Johannes Schindelin wrote: > When pushing a branch to a remote repository that the remote side did > not know beforehand, it is often handy to set up the branch tracking > such that > > $ git checkout xyz > $ git push --track origin xyz:abc > $ git pull > > will pull the branch 'abc' from the remote 'origin' into the branch > 'xyz'. What if "xyz" is a tag? Right now, the patch generates a bogus config section. Yes, you can say "don't use --track, then". But I can think two reasons why that isn't acceptable: 1. You might be pushing multiple things, one of which is a branch and one of which is not. 2. This is likely to grow a related config variable, similar to branch.autosetupmerge. How about "git push --track origin HEAD"? This also generates bogus config. How about "git push --track origin refs/heads/*:refs/heads/*"? Also bogus. It looks like you catch "git push --track --all". So at least there is no bogus config generated. But it would be nice to translate this to "create a tracking branch for everything I pushed". So I think this patch is going about it the wrong way. Instead of parsing the refspec, I think you actually want to look at what we _do_ push (or at least try to push -- probably even uptodate refs should also have tracking established), and use that. Then you will have wildcards expanded, --all handled, etc. And I suspect all you have to do is iterate over the result of match_refs (which we call later), which should be even easier (because you don't have to parse the refspecs yourself). But I haven't looked carefully. > + if (!err && track) > + setup_tracking(transport->url); Wouldn't the remote name (if we have one) be preferable to the URL? As it is, doing "git push --track origin master" results in [branch "master"] remote = $YOUR_URL_FOR_ORIGIN merge = refs/heads/master which means that: 1. If you ever change remote.origin.url, it will not propagate to your branch section. 2. When you fetch, you are fetching into FETCH_HEAD, meaning your tracking refs are not updated. -Peff -- 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