]> git.ipfire.org Git - thirdparty/git.git/commit - remote.c
push: use remote.$name.push as a refmap
authorJunio C Hamano <gitster@pobox.com>
Tue, 3 Dec 2013 23:41:15 +0000 (15:41 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 4 Dec 2013 23:11:08 +0000 (15:11 -0800)
commitca02465b41311fe7634acb9bb5b5c61975ef5f38
tree67ed0c5f4ad4711d2959a717471331e6d175bcf9
parent50d829c11a3c82a8b23f2e165ab6944dfd9bbb36
push: use remote.$name.push as a refmap

Since f2690487 (fetch: opportunistically update tracking refs,
2013-05-11), we stopped taking a non-storing refspec given on the
command line of "git fetch" literally, and instead started mapping
it via remote.$name.fetch refspecs.  This allows

    $ git fetch origin master

from the 'origin' repository, which is configured with

    [remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*

to update refs/remotes/origin/master with the result, as if the
command line were

    $ git fetch origin +master:refs/remotes/origin/master

to reduce surprises and improve usability.  Before that change, a
refspec on the command line without a colon was only to fetch the
history and leave the result in FETCH_HEAD, without updating the
remote-tracking branches.

When you are simulating a fetch from you by your mothership with a
push by you into your mothership, instead of having:

    [remote "satellite"]
        fetch = +refs/heads/*:refs/remotes/satellite/*

on the mothership repository and running:

    mothership$ git fetch satellite

you would have:

    [remote "mothership"]
        push = +refs/heads/*:refs/remotes/satellite/*

on your satellite machine, and run:

    satellite$ git push mothership

Because we so far did not make the corresponding change to the push
side, this command:

    satellite$ git push mothership master

does _not_ allow you on the satellite to only push 'master' out but
still to the usual destination (i.e. refs/remotes/satellite/master).

Implement the logic to map an unqualified refspec given on the
command line via the remote.$name.push refspec.  This will bring a
bit more symmetry between "fetch" and "push".

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-push.txt
builtin/push.c
remote.c
remote.h
t/t5516-fetch-push.sh