Игнорировать определенные строки при создании/применении патча с помощью diff/patch?

/dev/stdout— это специальный файл.

Допустим, я вошел в систему с двумя пользователями (user1 на tty1 и user2 на tty2 ).

/dev/stdoutдля пользователя 1 относится к /dev/tty1, а для пользователя два относится к /dev/tty2.

Здесь httpпользователь пытается записать что-то в /dev/stdout, принадлежащее текущему пользователю (root):

bash-4.4# su - http -c "echo 1 >> /dev/stdout"
-sh: can't create /dev/stdout: Permission denied 

В другом случае httpпишет в файл, которым он владеет.

2
10.05.2021, 19:31
2 ответа

Если вы выполните patch(1), фрагменты, которые не подходят, будут сохранены в файле отклонения. Затем вы можете перейти к этому и применить (или нет )фрагменты, которые не попали.

Другая возможность (для хардкорных спортсменов )— просто отредактировать патч. Обратите внимание, что формат diff(1)предназначен для удобства чтения, а , а не — для редактирования. Вы должны быть осторожны, чтобы не перепутать номера строк или другие маркеры.

Если вы хотите создать патч для распространения, возможно, самый простой способ — просто применить патч как есть, отредактировать полученный файл по вкусу, а затем повторить патч для отредактированного файла.

0
28.07.2021, 11:35

Предполагая, что вы используете GNU diff, невозможно заставить его сгенерировать именно тот патч, который вам нужен. Можно попросить diffигнорировать строки, соответствующие данному регулярному выражению, с опцией -I, но будут игнорироваться только целые куски, состоящие только из таких изменений. В этом случае любой ханк (даже без контекста )изменит строки «Банан» и «Клементины».

Одна из возможностей, не требующая сложного редактирования патчей, — это попросить diffсгенерировать edсценарий :

.
diff -e

Это даст

2,3c
Blueberries
Cherries
.

, который можно адаптировать для создания патча, который вам нужен:

3,3c
Cherries
.
1
28.07.2021, 11:35

Теги

Похожие вопросы