Repository navigation
Add pre-push hook. #35
Description
Activity
I'm having difficulty forking the process into the background so that the push doesn't wait for the end of the song before exiting.
#!/bin/bash #mplayer -really-quiet /Users/alex/pushit_small.mp3 >&- 2>&- & mplayer -really-quiet /Users/alex/pushit_small.mp3 >&- 2>&- & disown #nohup mplayer -really-quiet -cache 8192 -vo null - /Users/alex/pushit_small.mp3 > /dev/null 2>&1 & #mplayer -really-quiet /Users/alex/pushit_small.mp3 <&- >&- 2>&- & disown #mplayer -really-quiet /Users/alex/pushit_small.mp3 & disown #mplayer -really-quiet /Users/alex/pushit_small.mp3 >/dev/null 2>&1 & echo "done" exit 0None of the above exit before the mp3 (a 10 second sample) has finished.
Although they do echo "done"Largely courtesy of @OddBloke:
Generating the awesome push it clip:
curl -s "$(youtube-dl -g http://www.youtube.com/watch\?v\=vCadcBR95oU -k)" > pushit ffmpeg -i pushit pushit.wav sox pushit.wav pushit_small.mp3 trim 1:56 10 fade 0:1 0 0:4I changed the curl/ffmpeg commands into this:
youtube-dl http://www.youtube.com/watch\?v\=vCadcBR95oU -qckx --audio-format wav -o pushit.wavSorry that actually doesn't extract the audio from the video
Another one I want, probably on nosetests not returning an error:
curl -s "$(youtube-dl -g https://www.youtube.com/watch\?v\=fm660vIn8Tg -k)" > vid ffmpeg -i vid vid.wav sox vid.wav vid.mp3 trim 0:11 19 fade 0:1 0 0:2I messed around with a bunch of methods to achieve background music playing in the terminal and nothing seemed to work on my machine. My only thought now is doing all these operations in python (import youtube-dl as a library, slicing up the audio using some other library and then playing it) and forking that python script to the background.
I have this script:
$ cat .git/hooks/pre-push #!/bin/bash mplayer -really-quiet /Users/alex/pushit_small.mp3 >&- 2>&- & disown echo "done" exit 0If I run .git/hooks/pre-push directly from the command line it works. As in, the music starts and I am given the console before the music finishes.
It's just that from the hook it fails. As in when run with
git pushDoes it fail in the sense that it hangs or in the sense that it doesn't play the clip?
Yes, sorry - it fails in the sense that it hangs whilst playing the clip - and only returns to the console after that.
Have you tried running a python script that spawns a subprocess?
For example
from subprocess import Popen Popen(["mplayer", "-really-quiet", "vid.mp3"])
I have no idea if this works as a git hook, but this runs in a few milliseconds for me and returns to my shell with the audio playing in the background. I can even kill the shell that ran the python process.
I can confirm that @ikornaselur's solution works
@koddsson I beg to differ.
$ cat .git/hooks/pre-push #!/usr/bin/env python import sys from subprocess import Popen Popen(["mplayer", "-really-quiet", "/Users/alex/pushit_small.mp3"]) sys.exit(0)When I run:
git pushI have to wait for the tune to play before getting terminal access again.
Huh, that's weird. Works on my ubuntu 14.04. Maybe you need to upgrade to a better OS.
All jokes aside maybe we can compare how it works on our different machines tomorrow at work.
Yeah, I haven't had any problems with backgrounding the hook on my Debian machine.
One potential solution to try: daemonising the process that calls mplayer.
Closing on account of impossibility on mac.
For reasons that are beyond me.
Hi,
You can use quicktime to snip your mp3 and the native mac command line player to play it from command line.
Please see below.
#!/bin/bash ## ADD VARIABLES HERE ## _yourSoundFileAndPath="/Users/jeremykenedy/Desktop/pushit-jk-master/pushit8s.m4a" ## ADD ALIAS'S HERE ## alias pushitmaster="git push origin master;afplay "$_yourSoundFileAndPathI also created a repo @ https://github.com/jeremykenedy/pushit
Yay !
Jeremy :)
Nice @jeremykenedy - I'll see if afplay suffers from the same behaviour as mplayer when combined with a git hook.

I want to play "push it" by salt n pepa on every push.