Ответ 1
Когда у вас есть несколько человек, меняющих один и тот же файл одновременно, очень возможно, чтобы оба изменили одни и те же строки. Вот что с тобой случилось. Салли меняет те же строки, что и Гарри. Когда Гарри сделал svn update
, Subversion обнаружил это и спрашивает, что делать.
Предупреждение: иногда Subversion ищет различия в строке между вашей версией и их версией, а не значимые различия. Например, если отступ строки был изменен или интервал был другим, или если вы изменили окончание строки, Subversion объявит это как конфликт, хотя, вероятно, это не так. Возможно, почему книга не нашла эту проблему, но вы это сделали. Не означает, что вы сделали что-то не так.
Что делать? Subversion дает вам несколько вариантов.
- отложить p: Это то, что я обычно делаю с этим типом ситуации. Subversion будет внедряться в файлы diff-маркеров, которые выглядят как в файле:
<<<<<<< .mine
foobar
=======
fubar
>>>>>>> .rxxx
Это показывает вам изменения в ревизии rxxx (что сделала Салли), похожее на изменения, которые у вас есть (Гарри меняется). Обычно изменения незначительны, что довольно легко понять, что делать.
- показать diff df: Это покажет вам различия между вашими изменениями (Гарри) и тем, что в другой редакции (Sally's). В основном это показывает маркеры различий.
- edit e: вы можете редактировать конфликт слияния, как вы делаете слияние, а не ждать дольше.
- merge m: Не слишком уверен, что это делает. Вы делаете слияние прямо сейчас, поэтому это не имеет особого смысла.
- их сторона конфликта tc: Примите то, что сделала Салли, чтобы разрешить конфликт. Вероятно, вам придется переделать свои изменения, но по крайней мере вы рассматриваете изменения Салли.
- моя сторона конфликта mc: Самый опасный сценарий, потому что вы полностью игнорируете изменения Салли. Салли сделала исправление, и вы, возможно, отменили его. Когда выйдет релиз, а Sally fix не будет в нем, вас обвинят в том, что вы удалите это изменение. Итак, почему вы это делаете? Потому что вы уже посмотрели на изменения и поняли, что конфликт действительно не был конфликтом. Это было изменение в отступе или что-то подобное. Или вы вызвали переменную
increment
, и Салли назвала ееcounter
.
Как я уже сказал, я обычно делаю отсрочку, позволяю моему обновлению закончить, а затем обрабатывать проблемы.
Как только вы исправите проблему, вы делаете svn resolved
в этом файле, чтобы Subversion узнала, что вы исправили конфликт.
Есть еще один выбор - например, вы можете запустить сторонний инструмент diff/merge для обработки конфликта.
За дополнительной информацией обратитесь к руководству Subversion on line о разрешении конфликтов слияния.