# [GUILT] Preventing "git push" when guilt patches are applied

3 messages from 2012-04-19 to 2012-04-30. Participants: Per Cederqvist, Junio C Hamano.
Thread: https://gitlist.dev/t/30283

## Per Cederqvist, 2012-04-19 07:23

Subject: [GUILT] Preventing "git push" when guilt patches are applied
Message-ID: <4F8FBD63.9050507@opera.com>
URL: https://gitlist.dev/e/4F8FBD63.9050507%40opera.com

```
I have by accident done "git push" when I intended to write "guilt
push" a couple of times.  If there are guilt patches applied when I do
this the result is that (part of) my half-finished patch series is
pushed to the master branch.  That is of course not good.

TopGit avoids this issue since I'm on a separate branch when patches
are applied.

Mercurial Queues prevents this.  If I try to do "hg push" with a patch
applied, I get this error:

 > pushing to /home/cederp/pushstop/hgmaster
 > abort: source has mq patches applied

I'd like to add something similar to Guilt, to avoid making this
mistake ever again.  (It is quite embarrassing to clean up after you
push a couple of half-baked patches.)  But I don't know how the
feature should be designed.  Some ideas:

  - Add pre-push hooks to Git, like the one proposed back in 2008 in
    <http://thread.gmane.org/gmane.comp.version-control.git/92900>.
    Have Guilt automatically install a pre-push hook that produces an
    error message if Guilt patches are applied.

  - Have Guilt create a status file (maybe .git/PUSH_FORBIDDEN)
    whenever patches are applied, and remove the file when it pops all
    patches.  The file would contain the following text: "Refusing to
    push while guilt patches are applied.  Hint: see 'guilt -h
    commit'."  Have "git push" check for that file, and print its
    contents if it exists.  (Or should "git push" check for any file
    matching the glob pattern ".git/PUSH_FORBIDDEN.*" and Guilt create
    .git/PUSH_FORBIDDEN.Guilt so that this mechanism is more
    extensible?)

  - Have Guilt remove all remotes when patches are pushed, and restore
    them when all patches are popped.  (I don't like this idea; there
    are too many things that could go wrong.  But it would be possible
    to implement without doing any changes to Git itself.)

I hope the Git community can come up with a better design for this
feature.

     /ceder

```

## Junio C Hamano, 2012-04-19 15:19

Subject: Re: [GUILT] Preventing "git push" when guilt patches are applied
Message-ID: <CAPc5daV4mK7aLRAm4Ow9TBPf5Tj3B=Qpf0=cRXjbeZoOuoYMKQ@mail.gmail.com>
URL: https://gitlist.dev/e/CAPc5daV4mK7aLRAm4Ow9TBPf5Tj3B%3DQpf0%3DcRXjbeZoOuoYMKQ%40mail.gmail.com
In-Reply-To: <4F8FBD63.9050507@opera.com>

```
On Thu, Apr 19, 2012 at 12:23 AM, Per Cederqvist <cederp@opera.com> wrote:
> I have by accident done "git push" when I intended to write "guilt
> push" a couple of times.  If there are guilt patches applied when I do
> this the result is that (part of) my half-finished patch series is
> pushed to the master branch.  That is of course not good.
>
> TopGit avoids this issue since I'm on a separate branch when patches
> are applied.
> ...
> I'd like to add something similar to Guilt, to avoid making this
> mistake ever again.  (It is quite embarrassing to clean up after you
> push a couple of half-baked patches.)  But I don't know how the
> feature should be designed.  Some ideas:
> ...

Isn't the most obvious one (somehow missing from your list) from your
observation you
described earlier to have guilt apply patches on a separate branch?

Would it also work to set "[push] default = none"?  Then "git push"
typed by mistake for
"guilt push" (I am assuming that "$whichever push" does not take any
other argument,
and that is the root cause of your fat-finger-embarrassment issue)
would not push anything
out.

```

## Per Cederqvist, 2012-04-30 10:34

Subject: Re: [GUILT] Preventing "git push" when guilt patches are applied
Message-ID: <4F9E6AC6.9070606@opera.com>
URL: https://gitlist.dev/e/4F9E6AC6.9070606%40opera.com
In-Reply-To: <CAPc5daV4mK7aLRAm4Ow9TBPf5Tj3B=Qpf0=cRXjbeZoOuoYMKQ@mail.gmail.com>

```
On 04/19/2012 05:19 PM, Junio C Hamano wrote:
> On Thu, Apr 19, 2012 at 12:23 AM, Per Cederqvist<cederp@opera.com>  wrote:
>> I have by accident done "git push" when I intended to write "guilt
>> push" a couple of times.  If there are guilt patches applied when I do
>> this the result is that (part of) my half-finished patch series is
>> pushed to the master branch.  That is of course not good.
>>
>> TopGit avoids this issue since I'm on a separate branch when patches
>> are applied.
>> ...
>> I'd like to add something similar to Guilt, to avoid making this
>> mistake ever again.  (It is quite embarrassing to clean up after you
>> push a couple of half-baked patches.)  But I don't know how the
>> feature should be designed.  Some ideas:
>> ...
>
> Isn't the most obvious one (somehow missing from your list) from your
> observation you
> described earlier to have guilt apply patches on a separate branch?

It wasn't obvious to me, but I think it is a good idea. I've posted
an implementation of this here:

http://thread.gmane.org/gmane.comp.version-control.git/196546

> Would it also work to set "[push] default = none"?  Then "git push"
> typed by mistake for
> "guilt push" (I am assuming that "$whichever push" does not take any
> other argument,
> and that is the root cause of your fat-finger-embarrassment issue)
> would not push anything
> out.

That would maybe help me, but I would still be reluctant to recommend
Guilt to my friends, as I don't want to be the reason they make stupid
mistakes. :-)

     /ceder

```
