[ovs-dev] [PATCH] committer-responsibilities: Add guidelines for fixing up mistakes.
Ilya Maximets
i.maximets at samsung.com
Thu Jul 25 08:21:25 UTC 2019
On 25.07.2019 6:09, Ben Pfaff wrote:
> On Wed, Jul 24, 2019 at 08:25:54PM +0300, Ilya Maximets wrote:
>> On 24.07.2019 20:05, Ben Pfaff wrote:
>>> Signed-off-by: Ben Pfaff <blp at ovn.org>
>>> ---
>>> Based on an off-lst discussion with Ilya. This is just my first, off-hand
>>> thought on the topic. Feedback welcome!
>>
>> We could also consider suggesting a git hook like that:
>> ---
>> $ cat .git/hooks/pre-push
>> #!/bin/bash
>>
>> remote=$1
>> protected_remote='upstream'
>>
>> if [ $protected_remote != $remote ]; then exit 0; fi
>>
>> echo "You're about to push to $protected_remote."
>>
>> read -p "Do you want to proceed? [y|n] " reply < /dev/tty
>> if echo $reply | grep -E '^[Yy]$' > /dev/null; then exit 0; fi
>>
>> exit 1
>> ---
>
> Have you tried this? How does it work for you in practice?
Yes. It works for me.
'exit 1' from the script fails the hook and disallows further push processing.
I have a remote named "upstream":
$ git remote -v
<...>
upstream https://github.com/openvswitch/ovs.git (fetch)
upstream https://github.com/openvswitch/ovs.git (push)
<...>
Push to that remote:
$ git push upstream HEAD:master --dry-run
Username for 'https://github.com': username
Password for 'https://username@github.com':
You're about to push to upstream.
Do you want to proceed? [y|n] y
To https://github.com/openvswitch/ovs.git
d560bc1ba..959dce495 HEAD -> master
$ git push upstream HEAD:master --dry-run
Username for 'https://github.com': username
Password for 'https://username@github.com':
You're about to push to upstream.
Do you want to proceed? [y|n] n
error: failed to push some refs to 'https://github.com/openvswitch/ovs.git'
Push to any other remote:
$ git push origin HEAD:master --dry-run
To ssh://gerrit:29418/ovs
c34a87b6c..959dce495 HEAD -> master
Few notes why this hook might not work:
* Need to replace: s/upstream/<name of the github.com/openvswitch/ovs.git remote>/
* The hook file should be executable.
* I guess, there might be issues accessing /dev/tty, but It's unclear what to do
in this case.
I also added some colours locally to make the warning more visible:
echo -e "You're about to push to \e[91m$protected_remote\e[39m."
Best regards, Ilya Maximets.
More information about the dev
mailing list