git log -G<regex> -p
є прекрасним інструментом пошуку історії кодової бази змін, що відповідають заданому шаблону. Однак, може виявитись непосильним розміщення відповідного лука у виводі різниць / виправлень у морі здебільшого невідповідних луків.
Звичайно, можна шукати вихід git log
оригінального рядка / регулярного вираження, але це мало що дозволяє зменшити зоровий шум і відволікання багатьох незв'язаних змін.
Читаючи далі git log
, я бачу, що є те --pickaxe-all
, що є абсолютно протилежним тому, що я хочу: він розширює вихід (на весь набір змін), тоді як я хочу обмежити його (на певну частину).
По суті, я шукаю спосіб "розумно" розібрати розріз / виправлення на окремі номери, а потім здійснити пошук проти кожної частини (орієнтований лише на змінені лінії), відкинути лунки, які не відповідають, і вивести ці що роблять.
Чи існує такий інструмент, як я описав? Чи є кращий підхід для отримання відповідних / постраждалих луків?
Деякі початкові дослідження, які я зробив ...
Якби можна було
grep
виводити diff / patch і робити значення параметрів контексту динамічними - скажімо, через регулярні вирази замість підрахунку рядків - цього може бути достатньо. Алеgrep
це не зовсім побудовано таким чином (і я не обов'язково вимагаю цієї функції).Я знайшов пакет пачутілів , який спочатку прозвучав так, ніби він відповідає моїм потребам. Але після прочитання його
man
сторінок інструменти не обробляють відповідні частини на основі регулярних виразів. (Вони можуть прийняти список хангів, хоча ...)Нарешті я натрапив на splitpatch.rb , який, здається, добре впорається з розбором патча, але його потрібно буде значно вдосконалити, щоб обробляти патчі для читання за допомогою
stdin
, узгоджуючи потрібні парки, а потім виводити парки.