Для чего нужна команда quilt remove? (это та же самая quilt pop, только хуже)

Knoppix

Модераторы: Warderer, Модераторы разделов

Аватара пользователя
жучара
Сообщения: 1085
ОС: астралинукс

Для чего нужна команда quilt remove?

Сообщение жучара »

Друзья! Вот инфа по quilt
http://www.shakthimaan.com/downloads/glv/quilt-tutorial/quilt-doc.pdf

https://www.red-bean.com/doc/quilt/quilt.pdf

ну и man

Изучив её, я так и не понял, зачем нужна команда quilt remove. Посудите сами. Создадим файл foo, потом два патча patch1.diff и patch2.diff, применим их к нему один за одним в порядке создания. А потом смоделируем ситуацию, типа мы решили отыграть назад на один патч (командой quilt pop). И посмотрим ко всему прочему, какой патч будет на верхушке стека, а именно patch1.diff. Всё верно и предсказуемо.

Shell

user@debian:~/Desktop/temp_1$
user@debian:~/Desktop/temp_1$ ls -a
. ..
user@debian:~/Desktop/temp_1$ echo строка_0 > foo
user@debian:~/Desktop/temp_1$ quilt new patch1.diff
Патч patch1.diff теперь наверху
user@debian:~/Desktop/temp_1$ quilt add foo
Файл foo добавлен к патчу patch1.diff
user@debian:~/Desktop/temp_1$ echo строка_1 > foo
user@debian:~/Desktop/temp_1$ quilt refresh
Патч patch1.diff обновлён
user@debian:~/Desktop/temp_1$ quilt new patch2.diff
Патч patch2.diff теперь наверху
user@debian:~/Desktop/temp_1$ quilt add foo
Файл foo добавлен к патчу patch2.diff
user@debian:~/Desktop/temp_1$ echo строка_2 > foo
user@debian:~/Desktop/temp_1$ quilt refresh
Патч patch2.diff обновлён
user@debian:~/Desktop/temp_1$ quilt pop
Удаление патча patch2.diff
Restoring foo

Текущий патч: patch1.diff
user@debian:~/Desktop/temp_1$ cat foo
строка_1
user@debian:~/Desktop/temp_1$ quilt top
patch1.diff
user@debian:~/Desktop/temp_1$

Теперь проделаем абcолютно всё то же самое, только вместо команды quilt pop будем использовать команду quilt remove foo.

Shell

user@debian:~/Desktop/temp_1$
user@debian:~/Desktop/temp_1$ echo строка_0 > foo
user@debian:~/Desktop/temp_1$ quilt new patch1.diff
Патч patch1.diff теперь наверху
user@debian:~/Desktop/temp_1$ quilt add foo
Файл foo добавлен к патчу patch1.diff
user@debian:~/Desktop/temp_1$ echo строка_1 > foo
user@debian:~/Desktop/temp_1$ quilt refresh
Патч patch1.diff обновлён
user@debian:~/Desktop/temp_1$ quilt new patch2.diff
Патч patch2.diff теперь наверху
user@debian:~/Desktop/temp_1$ quilt add foo
Файл foo добавлен к патчу patch2.diff
user@debian:~/Desktop/temp_1$ echo строка_2 > foo
user@debian:~/Desktop/temp_1$ quilt refresh
Патч patch2.diff обновлён
user@debian:~/Desktop/temp_1$ quilt remove foo
Файл foo удалён из патча patch2.diff
user@debian:~/Desktop/temp_1$ cat foo
строка_1
user@debian:~/Desktop/temp_1$ quilt top
patch2.diff
user@debian:~/Desktop/temp_1$
И в чём прикол, я не понял? Всё то же самое, что и при использовании команды quilt pop, с той лишь разницей, что теперь наверху неправильный патч (неприменёный в смысле) patch2.diff. В дальнейшем это приведёт к путанице. Я же говорю, remove то же самое, что и pop, только хуже.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++

Возможность указать имя патча подсказывает нам, что, вероятно, можно удалять произвольный патч? Как бы не так. Ниже код. К файлу foo применено один за другим три патча patch1.diff, patch2.diff и patch3.diff. Теперь на верхушке стека патч patch3.diff. Потом мы меняем верхушку стека командой quilt push. Получается, на верхушке стека у нас патч patch2.diff, а patch1.diff и patch3.diff по разные стороны от верхушки стека и ни к одному из них команда quilt remove НЕПРИМЕНИМА! Я же говорю, то же самое, что и quilt pop, только хуже.

Shell

user@debian:~/Desktop/temp_1$
user@debian:~/Desktop/temp_1$ ls -a
. ..
user@debian:~/Desktop/temp_1$ echo строка_0 > foo
user@debian:~/Desktop/temp_1$ quilt new patch1
Патч patch1 теперь наверху
user@debian:~/Desktop/temp_1$ quilt add foo
Файл foo добавлен к патчу patch1
user@debian:~/Desktop/temp_1$ echo строка_1 > foo
user@debian:~/Desktop/temp_1$ quilt refresh
Патч patch1 обновлён
user@debian:~/Desktop/temp_1$ quilt new patch2
Патч patch2 теперь наверху
user@debian:~/Desktop/temp_1$ quilt add foo
Файл foo добавлен к патчу patch2
user@debian:~/Desktop/temp_1$ echo строка_2 > foo
user@debian:~/Desktop/temp_1$ quilt refresh
Патч patch2 обновлён
user@debian:~/Desktop/temp_1$ quilt new patch3
Патч patch3 теперь наверху
user@debian:~/Desktop/temp_1$ quilt add foo
Файл foo добавлен к патчу patch3
user@debian:~/Desktop/temp_1$ echo строка_3 > foo
user@debian:~/Desktop/temp_1$ quilt refresh
Патч patch3 обновлён
user@debian:~/Desktop/temp_1$ quilt pop
Удаление патча patch3
Restoring foo

Текущий патч: patch2
user@debian:~/Desktop/temp_1$
user@debian:~/Desktop/temp_1$
user@debian:~/Desktop/temp_1$ quilt remove -P patch1 foo
Файл foo изменён патчем patch2
user@debian:~/Desktop/temp_1$ quilt remove -P patch3 foo
Патч patch3 не применён
user@debian:~/Desktop/temp_1$ cat foo
строка_2
user@debian:~/Desktop/temp_1$ quilt top
patch2
user@debian:~/Desktop/temp_1$
user@debian:~/Desktop/temp_1$
Я уж, грешным делом, подумал, может quilt remove явно удаляет файл из патча, как собсно и написано в manе?

Remove named files from the named patch

Shell

user@debian:~/Desktop/temp_1$
user@debian:~/Desktop/temp_1$ ls -a
. ..
user@debian:~/Desktop/temp_1$ echo строка0 > foo
user@debian:~/Desktop/temp_1$ quilt new patch1
Патч patch1 теперь наверху
user@debian:~/Desktop/temp_1$ quilt add foo
Файл foo добавлен к патчу patch1
user@debian:~/Desktop/temp_1$ echo строка1 > foo
user@debian:~/Desktop/temp_1$ quilt refresh
Патч patch1 обновлён
user@debian:~/Desktop/temp_1$ quilt remove foo
Файл foo удалён из патча patch1
user@debian:~/Desktop/temp_1$ cat patches/patch1
Index: temp_1/foo
===================================================================
--- temp_1.orig/foo 2019-05-27 19:13:40.085105301 +0500
+++ temp_1/foo 2019-05-27 19:14:16.173875122 +0500
@@ -1 +1 @@
-строка0
+строка1
user@debian:~/Desktop/temp_1$
Нет, не удаляет. В общем, был бы рад ошибиться и увидеть полезность тык скыть quilt remove. Спасибо, кто откликнется.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21251
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Для чего нужна команда quilt remove?

Сообщение Bizdelnick »

Команда quilt remove делает именно то, что написано: удаляет файл из патча (откатив при этом изменения, внесённые патчем в этот файл). Эффекта Вы не видите, потому что не обновили патч командой quilt refresh.
quilt pop, в отличие от remove, никак не изменяет патчи.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 1085
ОС: астралинукс

Re: Для чего нужна команда quilt remove?

Сообщение жучара »

Bizdelnick писал:
27.05.2019 23:04
Команда quilt remove делает именно то, что написано: удаляет файл из патча (откатив при этом изменения, внесённые патчем в этот файл). Эффекта Вы не видите, потому что не обновили патч командой quilt refresh.
quilt pop, в отличие от remove, никак не изменяет патчи.
Вот здесь, допустим, что без refresh, что с ним, каким было содержание патча, таким и осталось.

Shell

user@debian:~/Desktop/temp_0$
user@debian:~/Desktop/temp_0$
user@debian:~/Desktop/temp_0$ ls -a
. ..
user@debian:~/Desktop/temp_0$ echo строка_0 > foo
user@debian:~/Desktop/temp_0$ quilt new patch1
Патч patch1 теперь наверху
user@debian:~/Desktop/temp_0$ quilt add foo
Файл foo добавлен к патчу patch1
user@debian:~/Desktop/temp_0$ echo строка_1 > foo
user@debian:~/Desktop/temp_0$ quilt refresh
Патч patch1 обновлён
user@debian:~/Desktop/temp_0$ quilt remove -P patch1 foo
Файл foo удалён из патча patch1
user@debian:~/Desktop/temp_0$
user@debian:~/Desktop/temp_0$
user@debian:~/Desktop/temp_0$ cat patches/patch1
Index: temp_0/foo
===================================================================
--- temp_0.orig/foo 2019-05-28 01:43:21.752809769 +0500
+++ temp_0/foo 2019-05-28 01:44:08.082501898 +0500
@@ -1 +1 @@
-строка_0
+строка_1
user@debian:~/Desktop/temp_0$
user@debian:~/Desktop/temp_0$
user@debian:~/Desktop/temp_0$ quilt refresh
Ничего нет в патче patch1
user@debian:~/Desktop/temp_0$
user@debian:~/Desktop/temp_0$
user@debian:~/Desktop/temp_0$ cat patches/patch1
Index: temp_0/foo
===================================================================
--- temp_0.orig/foo 2019-05-28 01:43:21.752809769 +0500
+++ temp_0/foo 2019-05-28 01:44:08.082501898 +0500
@@ -1 +1 @@
-строка_0
+строка_1
user@debian:~/Desktop/temp_0$
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21251
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Для чего нужна команда quilt remove?

Сообщение Bizdelnick »

Следите за руками:

Shell

% echo 0 > foo
% quilt new 1.patch
Патч patches/1.patch теперь наверху
% quilt add foo
Файл foo добавлен к патчу patches/1.patch
% echo 1 > foo
% quilt refresh
Патч patches/1.patch обновлён
% cat patches/1.patch
Index: test/foo
===================================================================
--- test.orig/foo
+++ test/foo
@@ -1 +1 @@
-0
+1
% quilt remove foo
Файл foo удалён из патча patches/1.patch
% quilt refresh
Ничего нет в патче patches/1.patch
% cat patches/1.patch
% cat foo
0
% quilt add foo
% echo 2 > foo
% quilt refresh
Патч patches/1.patch обновлён
% cat patches/1.patch
Index: test/foo
===================================================================
--- test.orig/foo
+++ test/foo
@@ -1 +1 @@
-0
+2
% quilt remove -P 1.patch foo
Файл foo удалён из патча patches/1.patch
% cat patches/1.patch
Index: test/foo
===================================================================
--- test.orig/foo
+++ test/foo
@@ -1 +1 @@
-0
+2
% quilt refresh
Ничего нет в патче patches/1.patch
% cat patches/1.patch
%
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 1085
ОС: астралинукс

Re: Для чего нужна команда quilt remove?

Сообщение жучара »

У нас с вами по-разному работает команда quilt remove

Ваш вариант:

Shell

% echo 0 > foo
% quilt new 1.patch
Патч patches/1.patch теперь наверху
% quilt add foo
Файл foo добавлен к патчу patches/1.patch
% echo 1 > foo
% quilt refresh
Патч patches/1.patch обновлён
% cat patches/1.patch
Index: test/foo
===================================================================
--- test.orig/foo
+++ test/foo
@@ -1 +1 @@
-0
+1
% quilt remove foo
Файл foo удалён из патча patches/1.patch
% quilt refresh
Ничего нет в патче patches/1.patch
% cat patches/1.patch
% cat foo
То же самое, но на моей машине:

Shell

user@debian:~/Desktop$ echo 0 > foo
user@debian:~/Desktop$ quilt new 1.patch
Патч 1.patch теперь наверху
user@debian:~/Desktop$ quilt add foo
Файл foo добавлен к патчу 1.patch
user@debian:~/Desktop$ echo 1 > foo
user@debian:~/Desktop$ quilt refresh
Патч 1.patch обновлён
user@debian:~/Desktop$ cat patches/1.patch
Index: Desktop/foo
===================================================================
--- Desktop.orig/foo 2019-05-29 02:34:46.969412777 +0500
+++ Desktop/foo 2019-05-29 02:35:47.430760770 +0500
@@ -1 +1 @@
-0
+1
user@debian:~/Desktop$ quilt remove foo
Файл foo удалён из патча 1.patch
user@debian:~/Desktop$ quilt refresh
Ничего нет в патче 1.patch
user@debian:~/Desktop$ cat patches/1.patch
Index: Desktop/foo
===================================================================
--- Desktop.orig/foo 2019-05-29 02:34:46.969412777 +0500
+++ Desktop/foo 2019-05-29 02:35:47.430760770 +0500
@@ -1 +1 @@
-0
+1
user@debian:~/Desktop$
...у меня quilt неправильный?
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21251
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Для чего нужна команда quilt remove?

Сообщение Bizdelnick »

жучара писал(а):
29.05.2019 00:44
у меня quilt неправильный?
Всё может быть.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 1085
ОС: астралинукс

Re: Для чего нужна команда quilt remove?

Сообщение жучара »

Bizdelnick писал:
29.05.2019 09:37
Всё может быть.
а у вас какая версия quilt?
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21251
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Для чего нужна команда quilt remove?

Сообщение Bizdelnick »

Shell

% quilt --version
0.65
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 1085
ОС: астралинукс

Re: Для чего нужна команда quilt remove?

Сообщение жучара »

У меня 0.6. То есть сперва создали quilt 0.6, потом написали man:
Remove named files from the named patch. вот это вот вообще должно быть пояснено потому, что под удалением файла из патча может предполагаться всё, что угодно, и уже в версии quilt 0.63 это подтвердилось. Там поведение совсем другое (как у Bizdelnick в версии 0.65)

...То есть пишем в mane что-нибудь эдакое, а потом правим quilt ка на нужно, а man... А что man? Он же есть, вот если бы его не было... Если бы я так работал, меня бы с работы давно выгнали.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21251
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Для чего нужна команда quilt remove?

Сообщение Bizdelnick »

жучара писал(а):
02.06.2019 17:49
То есть пишем в mane что-нибудь эдакое, а потом правим quilt ка на нужно, а man
Скорее сделали сразу нормально, потом в какой-то версии сломали (вроде бы команду remove вообще пытались выкинуть, но потом передумали), потом снова починили.
жучара писал(а):
02.06.2019 17:49
Если бы я так работал, меня бы с работы давно выгнали.
Вы никогда не делаете ошибок? Простите, не верю. Разве что Вы на своей работе вообще ничего не делаете.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали: