16-200-things-changed

200 things changed, 2 actually did.

16-200-things-changed

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