I think, that the git-push behaviour is a bit unlogical in conjunction with $GIT_DIR/branches.
If $GIT_DIR/branches/name1 contains "<repository>#name2": - git-fetch name1 will fetch refs/heads/name2 from <repository> and store it in refs/heads/name1 - git-push name1 will push refs/heads/master to refs/heads/master in <repository>
I would expect, that git-push would somehow honour #name2. As far as I remember, cg-push name1 would have pushed HEAD to refs/heads/name2 in <repository>.
In remote.c, function read_branches_file the following code
would implement a similar behaviour:
strbuf_init(&push, 0);
strbuf_addstr(&push, "HEAD");
if (frag) {
strbuf_addf(&push, ":refs/heads/%s", frag);
} else
strbuf_addstr(&push, ":refs/heads/master");
add_push_refspec(remote, strbuf_detach(&push, 0));Options about this?
mfg Martin Kögler