diff options
Diffstat (limited to 'builtin/push.c')
-rw-r--r-- | builtin/push.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/builtin/push.c b/builtin/push.c index 857f76d85..9e47c29a3 100644 --- a/builtin/push.c +++ b/builtin/push.c @@ -58,6 +58,17 @@ static const char *map_refspec(const char *ref, } } + if (push_default == PUSH_DEFAULT_UPSTREAM && + !prefixcmp(matched->name, "refs/heads/")) { + struct branch *branch = branch_get(matched->name + 11); + if (branch->merge_nr == 1 && branch->merge[0]->src) { + struct strbuf buf = STRBUF_INIT; + strbuf_addf(&buf, "%s:%s", + ref, branch->merge[0]->src); + return strbuf_detach(&buf, NULL); + } + } + return ref; } |