2013-09-23 2 views
3

Я не думаю, что я даже хочу это увидеть. Почему другие считают это настолько важным?Почему «исходная» версия имеет такое большое значение в Perforce при слиянии (разрешение конфликтов является подробным)?

enter image description here

Не Base, Target достаточно для "разрешение конфликтов" ака Объединить окно инструментов. Что мне не хватает? Неужели люди действительно беспокоились о версии до Base i.e. Source?

ответ

8

Кажется, у вас есть фундаментальное непонимание того, что каждая из версий. Когда вы объединяете две ветки, почти всегда вы хотите сохранить изменения с обеих ветвей. Base является последним общим предком двух ветвей. Base->Source показывает, что было изменено в филиале, из которого вы сливаетесь, и Base->Target показывает, что было изменено в ветке, в которую вы сливаетесь. Чтобы правильно разрешить конфликт, вам нужно знать, что было изменено в каждой ветви.

+0

большое спасибо. ты спас мой день. – Chani

3

(Некоторая документация для p4merge на p4 docs - Merging Files)

При работе с слияния конфликта, есть четыре части к нему:

  1. общий предок, что обе ветви изменили
  2. Их изменения (источник)
  3. изменения (целевой)
  4. Конечный результат

p4 merge results

(Вы можете иметь старую версию p4merge - Документы показать другую формулировку, которая может прояснить путаницу)

«Источник» не пересмотром ранее, а скорее входящие изменения от слияния, которое сделал кто-то другой.

Игнорирование ваших изменений или их изменений - возможное разрешение конфликтов - многие из них, как по умолчанию, «сливаются, обрабатывают конфликты, используя мой». Однако у этого есть явная возможность вызвать регрессию функциональности, введенную другой ветвью (или, что еще хуже, удалить код, ожидаемый другой ветвью).

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

+1

Спасибо. Одной из причин, по которой я был особенно смущен, является то, что сейчас я сменяю свои изменения с моей собственной ветви * developer * на * production branch *. Таким образом, работа кажется для меня одномерной - т. Е. Существует только одна ветвь (ветвь разработчика, в которой присутствуют мои изменения), и мне нужно объединить изменения из этой ветки в производственную ветвь. Но я не понял, что в общем случае слияния могут произойти другие изменения, внесенные в производственную отрасль другими. Причина этого в том, что я единственный разработчик, работающий в этом модуле. Спасибо, что расчистили все это – Chani

Смежные вопросы