Зло сливается в мерзавце? - PullRequest
       27

Зло сливается в мерзавце?

19 голосов
/ 22 сентября 2009

"man gitglossary " содержит это определение злого слияния :

Злое слияние - это слияние, которое вносит изменения, которые не появляются у любого родителя.

Я не уверен, что понимаю смысл, к которому стремятся авторы. Почему это зло?

Ответы [ 4 ]

20 голосов
/ 22 сентября 2009

Потому что это помещает в код вещи, которые никто никогда не просил быть там. Как будто у вас был этот код:

$foo = bar;
$baz = qxx;

и это изменение:

$foo = bar;
$foo++;
$baz = qxx;

объединено с этим изменением:

$foo = bar;
$foo--;
$baz = qxx;

способом, который каким-то образом произвел:

$foo = bar;
$foo++;
$foo--;
--$baz;
$baz = qxx;

Ясно, что это зло.

Я полагаю, что достаточно беспокоиться о том, чтобы быть в man gitglossary, потому что чем больше задействованы ваши алгоритмы слияния, тем больше вероятность того, что они произведут такую ​​вещь.

10 голосов
/ 21 июля 2015

По словам самого Линуса Торвальдса (взято из списка рассылки git ):

«злое слияние» - это то, что вносит изменения, которые произошли ни из сторона и на самом деле не разрешают конфликт

8 голосов
/ 23 сентября 2009

Я думаю, что это может быть названо «злым слиянием», потому что это «сложный случай» для «git blame», который нужно решить при аннотировании файла (создание аннотаций истории по линиям).


Зловещие возможности слияния могут потребоваться, когда вы разработали функцию 'A' на главной ветви и функцию 'B' на боковой ветви, и эти функции конфликтуют семантическим (нетекстовым) способом. Примером может служить использование одного и того же имени для глобальной переменной с разными значениями - для этого необходимо переименовать переменную для одной из функций.

Для злого слияния "git show --cc" имеет непустую компактную комбинированную разность (но я не уверен, что это отношение эквивалентности; импликация может быть только в одном направлении, то есть "злое слияние" затем непусто "git diff-tree -p --cc ").

0 голосов
/ 15 июня 2017

Стоит упомянуть, что «злое изменение» от «злого слияния» может быть потеряно молча при отбрасывании «злого слияния», содержащего «злое изменение», которое не конфликтует с другими коммитами , Использование --preserve-merges не помогает в таком случае .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...