push: change `simple` to accommodate triangular workflows
commited2b18292bfeedc98c9e2b6bd8a35d8001dab2fc
authorRamkumar Ramachandra <artagnon@gmail.com>
Wed, 19 Jun 2013 11:11:41 +0000 (19 16:41 +0530)
committerJunio C Hamano <gitster@pobox.com>
Mon, 24 Jun 2013 17:16:49 +0000 (24 10:16 -0700)
tree2364e8eac7fbb0bc0916dc8b063147447137f54b
parent87a70e4ce8bb3bdbb3048a5eb837f6b5b2eff8f9
push: change `simple` to accommodate triangular workflows

When remote.pushdefault or branch.<name>.pushremote is set to a
remote that is different from where you usually fetch from (i.e. a
triangular workflow), master@{u} != origin, and push.default is set
to `upstream` or `simple` would fail with this error:

  $ git push
  fatal: You are pushing to remote 'origin', which is not the upstream of
  your current branch 'master', without telling me what to push
  to update which remote branch.

The very name of "upstream" indicates that it is only suitable for
use in central workflows; let us not even attempt to give it a new
meaning in triangular workflows, and error out as before.

However, the `simple` does not have to share this error.  It is
poised to be the default for Git 2.0, and we would like it to do
something sensible in triangular workflows.

Redefine "simple" as "safer upstream" for centralized workflow as
before, but work as "current" for triangular workflow.

We may want to make it "safer current", but that is a separate
issue.

Reported-by: Leandro Lucarella <leandro.lucarella@sociomantic.com>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/config.txt
builtin/push.c