I've created a pre-push hook that does what I described (and a bit more). It does only enforce a check for the remote flink master branch and doesn't disturb you on your pushes.
https://gist.github.com/mxm/4d1e26b901c66a682e4a Just put the the file in the .git/hooks/ directory of your repository directory. For example, if you run git push origin, it will check the URL of origin to contain "git.apache.org/flink.git". If the remote branch is master, it will run the 'mvn clean package' and then fail to push if maven doesn't exit successfully. Here some examples where I set protected_remote to my remote at "ssh://g...@github.com/mxm/flink.git" and protected_branch to "master": $ git push origin Verifying push to master via 'maven clean package'. ... Commits could not be verified. Executed 'mvn clean package' and it returned 1 error: failed to push some refs to 'ssh://g...@github.com/mxm/flink.git' $ git push origin Verifying push to master via 'maven clean package'. ... Counting objects: 12, done. Delta compression using up to 8 threads. Compressing objects: 100% (8/8), done. Writing objects: 100% (12/12), 838 bytes | 0 bytes/s, done. Total 12 (delta 5), reused 0 (delta 0) To ssh://g...@github.com/mxm/flink.git ce8acc4..d60197b master -> master $ git checkout master $ git push origin other:master Please switch to branch "other" to verify. $ vim README # make some changes $ git push origin Please commit or stash your pending changes. Hope this comes in handy for you. Best regards, Max On Wed, Jan 21, 2015 at 1:46 PM, Max Michels <m...@data-artisans.com> wrote: > @Robert The pre-push hook only resides in your local repository. It > cannot be pushed. Thus, we cannot enforce this check but it certainly > helps to prevent mistakes. As Ufuk mentioned, you can then even skip > the check with the --no-verify option if you're really sure. > > On Wed, Jan 21, 2015 at 11:45 AM, Ufuk Celebi <u...@apache.org> wrote: >> >> On 21 Jan 2015, at 11:40, Robert Metzger <rmetz...@apache.org> wrote: >> >>> Is the git hook something we can control for everybody? I thought its more >>> like a personal thing everybody can set up if wanted? >>> >>> I'm against enforcing something like this for every committer. I don't want >>> to wait for 15 minutes for pushing a typo fix to the documentation. >> >> Sorry, I didn't mean to have it in the repo. As long as we notice failing >> builds fast enough (aka email notification), it should be OK to keep it that >> way. As you said, every committer should decide this on her own. BTW You can >> always skip hooks with git push -n (--no-verify).