April 21st, 2013

gitk: more aggressive space ignoring

У меня внезапно образовалась необходимость смотреть диффы, в которых полезные изменения перемешаны с поправленным оформлением (переносами, отступами и тп). diff -w не осиливает игнорировать все из них.

Поскольку разбираться с алгоритмом diff мне не совсем хотелось, а пересобирать потом git под Windows мне не хотелось совсем, я решил ограничиться грязным хаком и пропустить через фильтр уже готовый дифф, перепроверив для каждого ханка, что он содержит значимые изменения. После какого-то числа попыток я понял что всунуть в пайп перловый скрипт не получится (Windows, да), поэтому пришлось сделать это прямо в gitk:

https://gist.github.com/max630/5427780

Разбито на 3 патча потому что первый - это вполне прямолинейный рефакторинг, который, однако, может сконфликтовать с какой-нибудь не той версией, а остальные 2 - это уже новый код. Зачем их 2, я уже не помню.

Это грязно не только по идее, но и по исполнению, так что я даже не буду пытаться предлагать это в апстрим, но если кому покажется интересным - пользуйтесь.