Есть ли минусы для включения git rerere? - PullRequest
90 голосов
/ 02 апреля 2011

Я читал разные вещи о функции grerererere и собираюсь ее включить. Но я не видел, чтобы кто-нибудь упоминал о возможных проблемах, которые могут возникнуть при его использовании. Я должен предположить, что есть недостаток, или он, вероятно, будет включен по умолчанию. Так есть ли какие-либо недостатки в разрешении rerere? Какие потенциальные проблемы это может вызвать, что иначе не произошло бы?

Ответы [ 4 ]

60 голосов
/ 02 апреля 2011

Если вы сделаете слияние неправильно, затем откажитесь от него, затем сделайте «то же самое» слияние снова, оно снова будет неправильным.Вы можете забыть записанное разрешение, хотя.Из документации :

git rerere forget <pathspec>

Сбрасывает разрешения конфликтов, которые были записаны для текущего конфликта в <pathspec>.

Будьте осторожны, чтобы использовать его на определенных путях;Вы не хотите сдуть все ваши записанные резолюции повсюду.(forget без аргументов устарел , чтобы уберечь вас от этого, если вы не наберете git rerere forget ., чтобы явно запросить его.)

Но если вы не думаете делатьэто, вы могли бы легко положить это неправильное слияние в вашу историю ..

35 голосов
/ 02 апреля 2011

Как упоминает JC Hamano в своей статье " Fun with rerere "

  • Rerere помнит, как вы решили разрешить конфликтующие регионы;
  • Rerere также помнит, как вы подправили вне конфликтующих областей, чтобы приспособиться к семантическим изменениям;
  • Rerere может повторно использовать предыдущее разрешение, даже если вы объединяли две ветви с содержимым, отличным от того, которое вы разрешили ранее .

Даже люди, которые использовали rerere в течение длительного времени, часто не замечают последнего пункта.

Поэтому, если вы активируете rerere на слишком широком контенте, вы можете столкнуться с неожиданным или запутанным разрешением слияния из-за последнего пункта.

3 голосов
/ 31 мая 2015

Я выбрал коммит (в gitk), который содержал только двоичный файл. Cherrypick потерпел неудачу из-за конфликта (который приходит к выводу об этом естественно), и я решил конфликт, оставив вишневый кир. Позже я был удивлен, обнаружив в другой перебазированной ветви, что мои dll не вели себя - только обнаружив, что они не были перенесены в перебаз в качестве (я полагаю) автоматического разрешения конфликта. Так что это единственный случай, с которым я столкнулся (включив rerere), столкнувшись с нелогичным (хотя я уверен, что он абсолютно последовательным) поведением.

2 голосов
/ 27 июля 2012

У меня есть возможность rerere глобально. Я действительно не заметил никаких проблем, и обычно это облегчает мою жизнь.

...