aboutsummaryrefslogtreecommitdiff
path: root/.gitattributes
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2015-05-21 00:45:20 -0400
committerJunio C Hamano <gitster@pobox.com>2015-05-21 11:03:58 -0700
commitda66b2743cf7244e52c4b9d91646b782cd4f7eeb (patch)
tree66d953b9efea6fcaf85f0959449f5396a0378b48 /.gitattributes
parentf052154db332e48ea35b1a0d783361a40a361250 (diff)
downloadgit-da66b2743cf7244e52c4b9d91646b782cd4f7eeb.tar.gz
git-da66b2743cf7244e52c4b9d91646b782cd4f7eeb.tar.xz
remote.c: provide per-branch pushremote name
When remote.c loads its config, it records the branch.*.pushremote for the current branch along with the global remote.pushDefault value, and then binds them into a single value: the default push for the current branch. We then pass this value (which may be NULL) to remote_get_1 when looking up a remote for push. This has a few downsides: 1. It's confusing. The early-binding of the "current value" led to bugs like the one fixed by 98b406f (remote: handle pushremote config in any order, 2014-02-24). And the fact that pushremotes fall back to ordinary remotes is not explicit at all; it happens because remote_get_1 cannot tell the difference between "we are not asking for the push remote" and "there is no push remote configured". 2. It throws away intermediate data. After read_config() finishes, we have no idea what the value of remote.pushDefault was, because the string has been overwritten by the current branch's branch.*.pushremote. 3. It doesn't record other data. We don't note the branch.*.pushremote value for anything but the current branch. Let's make this more like the fetch-remote config. We'll record the pushremote for each branch, and then explicitly compute the correct remote for the current branch at the time of reading. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to '.gitattributes')
0 files changed, 0 insertions, 0 deletions