โ ๏ธ Warning: This post is over a year old, the information may be out of date.
๐ Patching cvs files using patch manually and how to revert it
๐ | โฐ 2 minutes
Assalamualaikum and hello everyone!
Today, I gonna put my note how to patch file using “patch” (linux utility tool). Have you using it? Well, please read linux.die.net/man/1/patch if you are looking for standard manual from man pages.
I know it already 2020 and yes, someone like me are still using CVS.
CVS (Concurrent Version Control) is very old source code control but it still use nowadays for certain project, even BSD ports still using CVS. To be honest, I donโt like CVS but because it they only SCM (source control management) tool for certain project.
Problem
So my project is microservices not monolith. Thus compiled services running inside server and we also store source code (checkout from cvs) inside the same server.
I have option todo coding on my Eclipse IDE locally and commit changes on cvs server and update (pull) changes on production/testing server, but sometimes I don’t want to commit yet. I don’t like half-baked code committed into branches. It will be dangerous and immature (not finalize code yet).
Solution
As solution, i will use patch to solve this issue. First, grab the changes as patch using command cvs diff -N -u -l "file_name_here" or via from eclipse ide (setting as diff output as Unified and patch root as project)

You may get something like this as result
| |
Copy the diff output (if from my example, copy from line 2-16 only) as put on file (as example I will call it as patch.diff) inside you server. Make use location of target file are correct and match from where patch.diff file are stored.
Now we can simulate / test it first (no file changes) using patch -b --dry-run -p0 < patch.diff and if everything ok, then do the real patch with patch -b -p0 < patch.diff.
$ patch -b -p0 < patch.diff
patching file src/com/ssp/support/commons/connection/ConnectionController.java
The parameter -b is additional but it better to always use it because it will create backup of file with extension *.orig and you can rollback / revert to origin state if after patched file and thing are not working as expected. so yes, wiht -b parameter, it will create backup for you. (you can search it with find . -name *.orig command)
Undo, revert, rollback? yes.. just simple run patch -R -p0 < patch.diff from terminal ๐
Posted by: Robbi Nespu
Robbi Nespu
he / him / his
Robbi Nespu
Hi! I’m Robbi Nespu. Welcome to my blog, where I share my experiences in software development, DevOps, information security, finance, real estate, and my personal adventures, including my activities in ham/cb radio (my callsign is 9W2NSP / 113MSNSP). For more details, feel free to check out the README section