Можно ли принудительно синхронизировать diff в указанной точке?

Я объединяю исходные файлы, которые включают разные версии одних и тех же функций. Функции не обязательно находятся в одном и том же порядке в разных файлах. Например, foo.c может содержать baz() с последующим quux(), в то время как bar.c содержит quux() с последующим baz(),

Я хотел бы заставить diff синхронизировать в первой строке функции, над которой я сейчас работаю, чтобы увидеть только изменения в этой функции. Есть ли способ сделать это с помощью GNU diff (или другая утилита сравнения)? У меня есть три обходных пути, ни один из которых не является хорошим:

  1. Скопируйте функции в отдельные файлы и diff эти файлы. Медленно и громоздко, плюс рискует ошибкой копирования и вставки.

  2. Переместите интересующую функцию вверх каждого файла, а затем разведите файлы. Немного проще, но все же отнимает много времени.

  3. Добавьте кусок текста lorem ipsum перед каждым файлом. (Это тот, который я сейчас использую.) Не требует перемещения кода, но, эй - зачем мне делать работу, которую машина вполне способна выполнять?:)

1 ответ

Решение

GNU diff не будет делать это, к сожалению, и пытается использовать split перед ним не будет практичным вообще.

Некоторые инструменты сравнения позволяют принудительно сопоставлять строки с так называемыми "ссылками синхронизации", Araxis сделает это (используя Wine в Linux), например Beyond Compare.

Другие вопросы по тегам