Применить diff между двумя файлами к третьему файлу
От: iAlexander Россия  
Дата: 20.03.12 15:47
Оценка:
Добрый день всем,

Есть две версии одного и того же проекта, один для win, другой для linux. Различия между ними в с-коде не слишком сильные — багфиксы для конкретной ОС ( ), вставки платформозависимого кода и т.п. Исходный код, увы, не под SCM, а as is. Выполнен большой рефакторинг win-версии кода, изменения существенные, и повторять вручную те же самые действия с linux-версией не хочется.
Можно ли на основании различий оригинального и модифицированного win-кода модифицировать linux-код аналогичным образом?
Иными словами результат diff -c win/source.c.orig win/source.c > source.diff применить к файлу linux/source.c аля patch?
Как можно было бы применять такой патч к другому файлу? — а основываясь лишь на контексте, ибо номера строчек, естественно, будут разниться для win- и linux- версий кода.

У diff есть опция контекстной замены, однако в лоб воспользоваться не удалось:
diff -c win/source.c.orig win/source.c > source.diff
patch -c -o lin/source.c lin/source.c.orig source.diff
Ошибки типа Hunk #80 FAILED at 3299...

Это типовой сценарий мержа изменений из одной ветки репозитория в другую, вот только нет никакой информации из системы контроля версий.
Учитывая большой объем изменений win-кода и сильной построчной схожести основного кода win и linux версий, хотел бы бОльшую часть изменений произвести автоматически, при этом конечно не ожидая 100% рабочего кода после выполнения такого мержа.

Есть ли способ?


22.03.12 01:37: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт
diff patch branch
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.