Развернуть unified diff
![](/images/graemlins/blush.gif)
---
...Я работаю антинаучным аферистом...
![](/images/graemlins/shocked.gif)
зачем? у patch же есть реверс
чтобы заставить patch не писать лишние предупреждения.
Хотя... Ладно.
У меня и так есть все версии, просто не хочется делать лишнюю работу, если её можно обойти,
diff ведь выдаёт обратимый результат, поэтому хотелось узнать, есть ли готовые решения.
---
...Я работаю антинаучным аферистом...
Можно поменять плюсы на минусы и поменять местами номера строк. Если есть наличие A или B, то можно пропатчить и снять новый diff.
Это решение чуть длиннее, чем "wget this && tar zxf this && ./configure --prefix=here && make install clean".
К тому же, в нагрузку шли бы ещё какие-нибудь полезные вещи.
---
...Я работаю антинаучным аферистом...
есть patchutils но он такого не умеет
cat patchfile-ab | perl -pe 'BEGIN { $l = 0; } chomp; if(++$l > 2) { s/^([\+-].*)$/$_ = $1; tr{+-}{-+}; "$_$2"/e; s/^\@\@ (.*) (.*) \@\@$/$a = $1; $_ = $2; $a =~ tr{+-}{-+}; tr{+-}{-+}; "\@\@ $_ $a \@\@" /e; } $_ .= "\n"' > patchfile-ba
Я дошёл досюда и мне всё это очень разонравилось.
В общем, я тогда уж лучше сам напишу.
Хотя за попытку спасибо.
---
"Верь сводке погоды, но доверяй --- интуиции.
Будь особенно бдителен, когда всё хорошо и нет поводов для тревоги."
> perl -peПочему?
Я дошёл досюда и мне всё это очень разонравилось.
Ну хорошо, тогда
gawk 'function sw(a) { if(a == "-") return "+"; else return "-" } /^(-|+)/ { if(FNR > 2) { print sw(substr($0,1,1 substr($0, 2) } else print } /^@@/ { print $1, sw(substr($3,1,1 substr($3,2 sw(substr($2,1,1 substr($2, 2 $4 } !/^(-|+|@@)/ { print }' patch-ab > patch-ba
я дошёл до сюда и мне разонравилось
Оставить комментарий
Ivan8209
Есть "diff -u A B".Где нарыть иструмент для получения "diff -u B A" по тому, что есть?
Писать это самому не очень хочется.
---
...Я работаю антинаучным аферистом...