Re: Tools that do an automatic fetch defeat "git push --force-with-lease"
- Date: Wed, 12 Apr 2017 11:11:51 +0200
- From: lists@xxxxxxxxxxxxxxxx (Stefan Haller)
- Subject: Re: Tools that do an automatic fetch defeat "git push --force-with-lease"
Junio C Hamano <gitster@xxxxxxxxx> wrote:
> On Tue, Apr 11, 2017 at 8:33 AM, Jacob Keller <jacob.keller@xxxxxxxxx> wrote:
> > If you're already copying sha1s around you could use those as the
> > --force-with-lease=branch:<commit>, no?
> > That's better guarantee than just using --force-with-lease alone.
> Absolutely. That was the _only_ way the feature was originally designed
> to be used sensibly. We really shouldn't have added that "lazy" option [...]
> Perhaps we should deprecate that "lazy" feature and remove it over
> time, making sure that everybody feeds the explicit commit object name
> that was recorded by the user somewhere (e.g. the approach to tag the
> commit to record the expected remote tip, which Peff illustrated).
I agree that this is better than giving the user a false sense of
The problem is that manually recording the lease is painful. Like I
illustrated, the assumption that you can "simply" do this:
(... my working copy is in some ramdom state)
(... now I decide I want to rewrite history)
$ git tag lease origin/master
$ git rebase -i
$ git push --force-with-lease=master:lease
doesn't hold, because by the time you decide to rewrite the history it's
already too late.
To solve this, I'd have to record the lease every time I pull or push;
this is a lot of work, and easy to forget and error-prone. Hence my
suggestion to have git do this automatically. I'd be interested in your
thoughts about that proposal, Junio; you didn't say anything about that
at all yet.