Merge branch 'jc/push-cas'
commit2233ad4534db8a37b1bf726312d52d4a0a51db0a
authorJunio C Hamano <gitster@pobox.com>
Mon, 9 Sep 2013 21:30:29 +0000 (9 14:30 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 9 Sep 2013 21:30:29 +0000 (9 14:30 -0700)
treea13884a1de77eb61ef89f9b3f780553c6b2a3225
parent711b2769740637e228c8200927e96b31f2065d32
parent05c1eb10348f159908becc7a6ed6bbcdab24c893
Merge branch 'jc/push-cas'

Allow a safer "rewind of the remote tip" push than blind "--force",
by requiring that the overwritten remote ref to be unchanged since
the new history to replace it was prepared.

The machinery is more or less ready.  The "--force" option is again
the big red button to override any safety, thanks to J6t's sanity
(the original round allowed --lockref to defeat --force).

The logic to choose the default implemented here is fragile
(e.g. "git fetch" after seeing a failure will update the
remote-tracking branch and will make the next "push" pass,
defeating the safety pretty easily).  It is suitable only for the
simplest workflows, and it may hurt users more than it helps them.

* jc/push-cas:
  push: teach --force-with-lease to smart-http transport
  send-pack: fix parsing of --force-with-lease option
  t5540/5541: smart-http does not support "--force-with-lease"
  t5533: test "push --force-with-lease"
  push --force-with-lease: tie it all together
  push --force-with-lease: implement logic to populate old_sha1_expect[]
  remote.c: add command line option parser for "--force-with-lease"
  builtin/push.c: use OPT_BOOL, not OPT_BOOLEAN
  cache.h: move remote/connect API out of it
builtin/fetch-pack.c
builtin/push.c
cache.h
fetch-pack.c
refs.c
remote-curl.c
remote.c
remote.h
transport-helper.c