remote.c: add branch_get_push
commite291c75a95d60862cbe12897b5cffb01ba4cedd5
authorJeff King <peff@peff.net>
Thu, 21 May 2015 04:45:36 +0000 (21 00:45 -0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 22 May 2015 16:33:08 +0000 (22 09:33 -0700)
tree2c46cac2d76b9f15f39d3ae0f30e1f2f22c8b1e3
parent979cb245e29b35812d2d71a04069ba7a4580981f
remote.c: add branch_get_push

In a triangular workflow, the place you pull from and the
place you push to may be different. As we have
branch_get_upstream for the former, this patch adds
branch_get_push for the latter (and as the former implements
@{upstream}, so will this implement @{push} in a future
patch).

Note that the memory-handling for the return value bears
some explanation. Some code paths require allocating a new
string, and some let us return an existing string. We should
provide a consistent interface to the caller, so it knows
whether to free the result or not.

We could do so by xstrdup-ing any existing strings, and
having the caller always free. But that makes us
inconsistent with branch_get_upstream, so we would prefer to
simply take ownership of the resulting string. We do so by
storing it inside the "struct branch", just as we do with
the upstream refname (in that case we compute it when the
branch is created, but there's no reason not to just fill
it in lazily in this case).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
remote.c
remote.h