Можно ли принудительно синхронизировать diff в указанной точке?
Я объединяю исходные файлы, которые включают разные версии одних и тех же функций. Функции не обязательно находятся в одном и том же порядке в разных файлах. Например, foo.c
может содержать baz()
с последующим quux()
, в то время как bar.c
содержит quux()
с последующим baz()
,
Я хотел бы заставить diff
синхронизировать в первой строке функции, над которой я сейчас работаю, чтобы увидеть только изменения в этой функции. Есть ли способ сделать это с помощью GNU diff
(или другая утилита сравнения)? У меня есть три обходных пути, ни один из которых не является хорошим:
Скопируйте функции в отдельные файлы и
diff
эти файлы. Медленно и громоздко, плюс рискует ошибкой копирования и вставки.Переместите интересующую функцию вверх каждого файла, а затем разведите файлы. Немного проще, но все же отнимает много времени.
Добавьте кусок текста lorem ipsum перед каждым файлом. (Это тот, который я сейчас использую.) Не требует перемещения кода, но, эй - зачем мне делать работу, которую машина вполне способна выполнять?:)
1 ответ
GNU diff не будет делать это, к сожалению, и пытается использовать split
перед ним не будет практичным вообще.
Некоторые инструменты сравнения позволяют принудительно сопоставлять строки с так называемыми "ссылками синхронизации", Araxis сделает это (используя Wine в Linux), например Beyond Compare.