Используя вывод diff для создания патча - PullRequest
37 голосов
/ 13 января 2009

У меня есть что-то вроде этого

src/sim/simulate.cc
41d40
< #include "mem/mem-interface.h"
90,91d88
<             dram_print_stats_common(curTick/500);
<
src/mem/physical.hh
52d51
<   public:
55,56d53
<       public:
<
58a56,57
>       public:
>
61,62c60,61
<         virtual bool recvTiming(PacketPtr pkt); //baoyg
<
---

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

Ответы [ 4 ]

69 голосов
/ 13 января 2009

Я считаю, что diff -u oldfile newfile > a.patch используется для создания файлов исправлений, хотя могут быть добавлены и некоторые другие переключатели (-N?).

Редактировать: ОК, 4 года спустя и, наконец, объясню, что означают переключатели:

-u создает Unified diff. Унифицированные различия - это разновидности различий, которые программа-патч ожидает получить в качестве входных данных. Вы также можете указать число после u (мин. 3, по умолчанию 3), чтобы увеличить количество выводимых строк. Это в том случае, если 3 строки недостаточно уникальны, чтобы указать только одну точку в программе.

-N рассматривает отсутствующие файлы как пустые, что означает, что он будет производить много дополнительного содержимого, если один из файлов пуст (или см. Следующий пункт).

Кроме того, newfile и oldfile могут быть каталогами вместо отдельных файлов. Вы, вероятно, захотите, чтобы аргумент -r для этого переписывал любые подкаталоги.

14 голосов
/ 13 января 2009

Если вы хотите получить тот же вывод патча, что и в SVN diff, для двух разных файлов:

diff -Naur file1.cpp file2.cpp

2 голосов
/ 13 января 2009

То, что у вас есть, это неунифицированный дифференциал. patch может прочитать его, но не сможет сделать контекстные совпадения и с большей вероятностью допустит ошибки.

1 голос
/ 13 января 2009

То, что - это (частичный) файл патча, хотя было бы лучше, если бы они предоставили вам унифицированный вывод diff.

Основная проблема с этим патчем заключается в том, что в нем не упоминается, какие файлы изменяются, и поскольку отсутствует контекст, файлы должны быть точными , патч не сможет учесть незначительные изменения в файле.

...