On Wed, Jan 4, 2017 at 6:34 PM, G. Sylvie Davies <sylvie@xxxxxxxxxxxxxxx> wrote: > Right now the default variant does this: > >> --force-with-lease alone, without specifying the details, will protect all remote refs that are going to be updated by requiring their current value to be the same as the remote-tracking branch we have for them. > > The problem is people sometimes run "git fetch". And so "git push > --force-with-lease" is going to do the push even if the local version > is stale. > > Instead I think the default behavior should require that the remote > ref's current value be equal to the merge-base of the local-branch and > remote-tracking-branch. > > Here's an example (password is "test" for the push): > > git clone http://test@xxxxxxxxxxxxxxxxxx/bitbucket/scm/bb/a.git > cd a > git checkout bugfix/TKT-123 > git reset --hard HEAD~1 (to simulate situation where local is stale, > but remote is up to date) > > At this point "git push --force-with-lease" is going to work. But I > think it shouldn't. (Note: I use push.default = simple). > > Here's how I think it should work: > > git push --force-with-lease=bugfix/TKT-123:$(git merge-base HEAD > origin/bugfix/TKT-123) > To http://vm.bit-booster.com/bitbucket/scm/bb/a.git > ! [rejected] bugfix/TKT-123 -> bugfix/TKT-123 (stale info) > > > For now I'm happy with this alias: > > git config --global alias.please '!sh -c "git push > --force-with-lease=$(git rev-parse --abbrev-ref HEAD):$(git merge-base > HEAD @{u})"' > Nevermind! I realize this essentially removes the "--force" and turns it into the original non-forced "fast-forwardable" only style push. [BLUSH!] I wonder if there's anything one could do to help those who type "git fetch" and still want to enjoy "--force-with-lease"... > But I'd like to put together a patch if people are interested in a > tweak like this to the --force-with-lease default behaviour. I > haven't written much C in my life, but thought this might make a good > force-myself-to-learn-C exercise. > > > - Sylvie Davies > > ps. I never thought about the fetch problem with --force-with-lease > until reading https://developer.atlassian.com/blog/2015/04/force-with-lease/ > and https://buddyreno.me/git-please-a182f28efeb5#.s291gh5jn , so > thanks to them!