16-200-things-changed

200 coisas mudaram, só 2 mudaram a sério.

16-200-things-changed

200 coisas mudaram, só 2 mudaram a sério.

Foi a diferença entre dois ficheiros de configuração que tive de promover de uat para prod. Um diff de texto normal ficou aceso como uma árvore de Natal. As outras 198? Elementos reordenados, um atributo VERSION, um timestamp. Ruído.

Mas quando um atributo errado parte produção, não dá para correr os olhos por 200 falsos-positivos à espera de apanhar os 2 reais. Por isso escrevi um diff diferente.

Funciona porque XML não é linhas — é uma árvore com identidade. <JOB name="X"> é o mesmo job seja ele o 1º filho ou o 40º. Reordenar não é uma mudança. Um diff de linhas não sabe isso. Um diff estrutural sabe.

O xmldiffreport compara dois ou mais ficheiros XML ao mesmo tempo, alinha elementos por uma chave natural (declarada numa recipe), ignora atributos que marcas como voláteis, e produz um relatório Markdown que um humano consegue rever.

Recipes built-in hoje: exports BMC Control-M, POMs Maven, relatórios JUnit, sitemaps. Ou escreve a tua — são pequenas.

Às vezes a ferramenta não existe porque toda a gente normalizou a dor. O ambiente do job, o manifesto do build, o pacote de deploy — todos silenciosamente cheios de ruído volátil que os humanos aprendem a ignorar. Até deixarem de conseguir.

Que falso-positivo é que a tua equipa aprendeu a viver com ele?

Repo: github.com/bilouro/xmldiffreport · Docs: xmldiffreport.bilouro.com

P.S. Novo post tech toda a quarta-feira aqui no LinkedIn.

#OpenSource #Python #SoftwareArchitecture

Comentários