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