16-200-things-changed
200 things changed, 2 actually did.

200 things changed, 2 actually did.
That was the diff between two config files I had to promote from uat to prod. A normal text diff lit up like a Christmas tree. The other 198? Reordered elements, a VERSION attribute, a timestamp. Noise.
But when one wrong attribute breaks production, you can't skim 200 false positives hoping to catch the 2 real ones. So I wrote a different kind of diff.
It works because XML isn't lines — it's a tree with identity. <JOB name="X"> is the same job whether it's the 1st child or the 40th. Reordering it isn't a change. A line diff can't know that. A structural diff can.
xmldiffreport compares two or more XML files at once, matches elements by a natural key (declared in a recipe), ignores attributes you mark volatile, and renders a Markdown report a human can review.
Built-in recipes today: BMC Control-M exports, Maven POMs, JUnit reports, sitemaps. Or write your own — they're tiny.
Sometimes the tool doesn't exist because everyone normalized the pain. The job environment, the build manifest, the deployment package — all silently full of volatile noise that humans learn to ignore. Until they don't.
What false positive has your team learned to live with?
Repo: github.com/bilouro/xmldiffreport · Docs: xmldiffreport.bilouro.com
P.S. New tech post every Wednesday.
#OpenSource #Python #SoftwareArchitecture
Comments