For some of my works and mainly for testing them, I use virtual machines and containers (that will be subject to another post). Since I used to make the development outside the testing environnement, I need to quickly and easily transfer patches and test them.
If you are in a similar case, this tip is for you.
My case was an improvement of the php-memcached library. I assume that you have a git version of your project on both sides.
First, make your workspace clean on your testing environment. If your project has a configure file and if you don't need to refresh it on each iteration, do configure and commit all files.
We will return to this state at the beginning of each iteration with
git reset --hard.
After that, we can use this oneliner:
while true ; do read ; git reset --hard ; nc -l -p 1234 | patch -p1 && make ; done
readcommand here prevents to reset the workspace just after the make. Press Enter is enough to launch a new iteration.
When your testing environment is listening and waiting for patch, you can launch this command on your development environment for each iteration:
git diff | nc -c ip 1234.
-cwill close the connection on EOF from stdin
If you prefer to commit and amend your changes, just use
git format-patch -1 instead of