forum.wfido.ru

forum.wfido.ru (https://forum.wfido.ru/index.php)
-   RU.UNIX.BSD (https://forum.wfido.ru/forumdisplay.php?f=36)
-   -   merge vs patch (https://forum.wfido.ru/showthread.php?t=39147)

Victor Sudakov 18.07.2017 19:00

merge vs patch
 
Victor Sudakov написал(а) к Alex Korchmar в Jul 17 21:37:16 по местному времени:

Dear Alex,

18 Jul 17 13:09, you wrote to me:

VS>> Почему же велосипед, вполне жизненная ситуация. Сидит Петя, пишет
VS>> код, коммитит в свой репозиторий. Вдруг звонит Вася и говорит:
VS>> помнишь ты год назад давал мне исходники своей проги,
AK> нормальные люди a) "дают" в виде clone
AK> b) принимают назад патчсет или pull request (патчсеты - это для

Да ладно, сколько лет жили без distributed VCS. Патчами именно что по почте обменивались, vendor branches импортировали и мержили.

AK> параноиков и скудоумного Линуса, который двадцать лет не мог научиться
AK> пользоваться системами контроля версий, требуя патчей в почту. В
AK> результате пришлось написать целый git, по сути автоматизирующий
AK> именно патчи в почте.)


Victor Sudakov, VAS4-RIPE, VAS47-RIPN
--- GoldED+/BSD 1.1.5-b20160322-b20160322

Alex Korchmar 19.07.2017 02:10

Re: merge vs patch
 
Alex Korchmar написал(а) к Victor Sudakov в Jul 17 00:28:35 по местному времени:

From: Alex Korchmar <noreply@linux.e-moe.ru>

Victor Sudakov <Victor.Sudakov@f49.n5005.z2.fidonet.org> wrote:

AK>> нормальные люди a) "дают" в виде clone
AK>> b) принимают назад патчсет или pull request (патчсеты - это для
VS> Да ладно, сколько лет жили без distributed VCS.
без компьютеров вовсе - жили еще больше. bitkeeper появился 17 лет назад.
(если бы его владелец не оказался феерически тупым и жадным м-ком, возможно,
никакого svn и прочих безумных клонов cvs в помине бы не было)

git'у пятнадцать лет, гитлабу десяток будет.
(а codeplex - труп, ага)


> Alex

--- ifmail v.2.15dev5.4

Victor Sudakov 22.07.2017 09:30

merge vs patch
 
Victor Sudakov написал(а) к Alex Korchmar в Jul 17 12:06:08 по местному времени:

Dear Alex,

17 Jul 17 09:08, you wrote to me:
VS>> Чем отличается "merge file1 file2 file3" от "diff file2 file3 |
VS>> patch file1" с точки зрения внутренней кухни?
AK> именно тем, что merge знает о существовании file1, в отличие от diff,
AK> это 3-way diff.

AK> man diff3 - вот он ничем не отличается, да.

VS>> Ну кроме того, что конфликты будут отражены внутри file1 вместо
VS>> ".rej".
AK> в rej вообще может ничего не попасть, а код работать не будет.
AK> Или наоборот - в file1 вообще может уже не быть нужного контекста.
AK> merge справится, потому что знает, куда он делся.

Откуда merge/diff3 может знать, куда он делся?

Я готов поверить, что в случае VCS операция merge заглядывает в историю изменений. Хотя тоже вряд ли. Если ты знаешь систему контроля версий, в которой merge происходит с учетом истории - назови ее, пожалуйста, чтобы я почитал, как это устроено внутри.

В случае же отдельно стоящей утилиты merge или diff3 она никак не может знать, что куда делось из MYFILE. Разве что если не делось, а сдвинулось, можно рискнуть магию с fuzz и т.п.

Victor Sudakov, VAS4-RIPE, VAS47-RIPN
--- GoldED+/BSD 1.1.5-b20160322-b20160322

Alex Korchmar 22.07.2017 18:50

Re: merge vs patch
 
Alex Korchmar написал(а) к Victor Sudakov в Jul 17 17:34:23 по местному времени:

From: Alex Korchmar <noreply@linux.e-moe.ru>

Victor Sudakov <Victor.Sudakov@f49.n5005.z2.fidonet.org> wrote:

AK>> man diff3 - вот он ничем не отличается, да.
VS> Откуда merge/diff3 может знать, куда он делся?
он знает разницу между твоей и чужой версиями. Обычному patch она неведома.

VS> Я готов поверить, что в случае VCS операция merge заглядывает в историю
нет, только в три файла - старый, новый и рабочую копию.

> Alex

--- ifmail v.2.15dev5.4

Valentin Nechayev 03.08.2017 18:11

Re: merge vs patch
 
Valentin Nechayev написал(а) к Victor Sudakov в Aug 17 16:42:44 по местному времени:

From: Valentin Nechayev <netch@segfault.kiev.ua>


>>> Victor Sudakov wrote:

VS> А если допустим Вася работает одновременно со мной над файлом, и потом щедро
VS> делится своими наработками:

VS> hg diff -r300:400 file1 | mail sudakov

VS> А я тоже этот файлик тем временем менял, и хочу еще и Васины наработки
VS> смержить, как мне присланный патч приложить посредством diff3 или merge к моему
VS> измененному файлу? Вася ведь не знает про мой файл, он мне только патч между
VS> своими версиями прислать может.

Потребовать точного указания исходной версии. Открыть новую ветку.
Наложить патч руками. Если не сходится - взять порцию вдохновения на
решение конфликта (если нету - послать нафиг).
Закоммитить полученное. А вот теперь можно мержить по всем правилам.

VS> ЗЫ предполагается, что у меня и у Васи разные репозитории, или вообще нет
VS> репозиториев.

А неважно, пока патч на что-то аккуратно накладывается.


--netch--
--- ifmail v.2.15dev5.4

Victor Sudakov 04.08.2017 06:41

merge vs patch
 
Victor Sudakov написал(а) к Valentin Nechayev в Aug 17 09:20:34 по местному времени:

Dear Valentin,

03 Aug 17 16:42, you wrote to me:

VS>> А если допустим Вася работает одновременно со мной над файлом, и
VS>> потом щедро делится своими наработками:

VS>> hg diff -r300:400 file1 | mail sudakov

VS>> А я тоже этот файлик тем временем менял, и хочу еще и Васины
VS>> наработки смержить, как мне присланный патч приложить посредством
VS>> diff3 или merge к моему измененному файлу? Вася ведь не знает про
VS>> мой файл, он мне только патч между своими версиями прислать может.

VN> Потребовать точного указания исходной версии. Открыть новую ветку.

О!

VN> Наложить патч руками. Если не сходится - взять порцию вдохновения на
VN> решение конфликта (если нету - послать нафиг).

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

VN> Закоммитить полученное. А вот теперь можно мержить по всем правилам.

VS>> ЗЫ предполагается, что у меня и у Васи разные репозитории, или
VS>> вообще нет репозиториев.

VN> А неважно, пока патч на что-то аккуратно накладывается.

Ага, алгоритм понятен, спасибо.

А не знаешь, что можно прикрутить к hg и svn для интерактивного merge в текстовом режиме, типа sdiff? Чтобы не руками ">>>>>>>" и "<<<<<<<<<" разгребать.

Victor Sudakov, VAS4-RIPE, VAS47-RIPN
--- GoldED+/BSD 1.1.5-b20160322-b20160322

Valentin Nechayev 05.08.2017 14:00

merge vs patch
 
Valentin Nechayev написал(а) к Victor Sudakov в Aug 17 12:44:00 по местному времени:

Нi,

>>>> Victor Sudakov wrote:

VS> Ага, алгоритм понятен, спасибо.

VS> А не знаешь, что можно прикрутить к hg и svn для интерактивного merge
VS> в текстовом режиме, типа sdiff? Чтобы не руками ">>>>>>>" и
VS> "<<<<<<<<<" разгребать.

С этими не работал, работал с Git. Но, вероятно, можно то же подключить.
Во-первых, ставится опция conflictstyle = diff3 - тогда она начинает, кроме двух выходных версий, рисовать и их базовую.
Во-вторых, если стандартная мержилка не справляется - вызываю git mergetool, которой настроено звать kdiff3 - она некоторые конфликты может решить сама, а на остальные рисует в графике три версии с возможностью выбрать мышкой и доредактировать. Но таких тулзей только штатно она знает штук 5, а есть ещё и другие совместимые с ними.


-netch-

... Если вы не нашли ошибку в программе, ищите ошибку в компиляторе.

---

Victor Sudakov 11.08.2017 07:50

merge vs patch
 
Victor Sudakov написал(а) к Valentin Nechayev в Aug 17 10:01:42 по местному времени:

Dear Valentin,

05 Aug 17 12:44, you wrote to me:
VS>> Ага, алгоритм понятен, спасибо.

VS>> А не знаешь, что можно прикрутить к hg и svn для интерактивного
VS>> merge в текстовом режиме, типа sdiff? Чтобы не руками ">>>>>>>" и
VS>> "<<<<<<<<<" разгребать.

VN> С этими не работал, работал с Git. Но, вероятно, можно то же
VN> подключить. Во-первых, ставится опция conflictstyle = diff3 - тогда
VN> она начинает, кроме двух выходных версий, рисовать и их
VN> базовую. Во-вторых, если стандартная мержилка не справляется - вызываю
VN> git mergetool, которой настроено звать kdiff3 - она некоторые
VN> конфликты может решить сама, а на остальные рисует в графике три
VN> версии с возможностью выбрать мышкой и доредактировать. Но таких
VN> тулзей только штатно она знает штук 5, а есть ещё и другие совместимые
VN> с ними.

kdiff3 это опять же GUI, а я спрашивал про text mode программку для интерактивного слияния.

Victor Sudakov, VAS4-RIPE, VAS47-RIPN
--- GoldED+/BSD 1.1.5-b20160322-b20160322

Victor Sudakov 11.08.2017 07:50

merge vs patch
 
Victor Sudakov написал(а) к Alex Korchmar в Aug 17 10:17:08 по местному времени:

Dear Alex,

22 Jul 17 17:34, you wrote to me:

AK>>> man diff3 - вот он ничем не отличается, да.
VS>> Откуда merge/diff3 может знать, куда он делся?
AK> он знает разницу между твоей и чужой версиями. Обычному patch она
AK> неведома.

VS>> Я готов поверить, что в случае VCS операция merge заглядывает в
VS>> историю
AK> нет, только в три файла - старый, новый и рабочую копию.

А вот кто знает - реализации patch и merge бывают разного качества (типа один merge/patch tool может с каким-то сложным случаем справиться лучше, чем другой tool) или математика за diff/patch/merge всегда одна и та же?

Victor Sudakov, VAS4-RIPE, VAS47-RIPN
--- GoldED+/BSD 1.1.5-b20160322-b20160322

Alex Korchmar 12.08.2017 00:50

Re: merge vs patch
 
Alex Korchmar написал(а) к Victor Sudakov в Aug 17 22:47:05 по местному времени:

From: Alex Korchmar <noreply@linux.e-moe.ru>

Victor Sudakov <Victor.Sudakov@f49.n5005.z2.fidonet.org> wrote:

VS> А вот кто знает - реализации patch и merge бывают разного качества
нет, потому что это порождение проекта gnu, где уже давно нет ни одного
программиста, одни п-сы и лоеры.

Все последние улучшизмы в этой области идут из гита (откуда копипастятся в gnu)


> Alex

--- ifmail v.2.15dev5.4


Текущее время: 16:42. Часовой пояс GMT +4.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot