Saturday, May 30, 2009

diff -q -r

I love to program in Groovy/Grails platform.
I have developed a framework for executing applications over Grid infrastructures such as PRAGMA. This project is in early stages therefore new features and modifications are actively added.
However, sometimes there are changes to cause that some components interfere negatively with other components and to track errors are challenge task, specially in this kind of projects who exhibit loosely coupled architectures. In fact, this is a service-oriented framework if you wish. As consequence, in rare situations a set of events fall in place and produce unexpected errors. That situation happened to me.
Thanks God, I decided to use git for managing versions in my software and I could identify the last date when the software worked well. However, I was pretty sure that many modifications were not the cause of the fault. Then, I started to check differences between the last stable version and the last version. So, I employed the 'diff' tool.
If you use 'diff -q -r <firs-dir> <second-dir>', it searches for differences between these two directories and print out the files to actually present differences.

OK, you got the files to present differences, now what? OK, use 'vimdiff'. If you invokve 'vimdiff file-one file-two' it would present a screen divided in half, left side shows 'file-one' and right side 'file-two'. In addition, the program highlights the text segments different between the files. Then, you could decide what changes make and what ignore.

In conclusion, git is a great tool for managing files versioning, diff is an elder tool used for building the 'patches' of early versions of Linux kernel but it stills do a great job. Finally, vimdiff is a great complement to diff. :-D.

Good hack,


No comments: