Разрешение конфликтов системы контроля версий

Изучение и разрешение конфликтов

Если вы и другой пользователь изменяете один и тот же файл в разных песочницах или в разных ветвях, при попытке зафиксировать измененные файлы появляется сообщение о конфликте. Следуйте процедуре «Разрешение конфликтов», чтобы при необходимости извлечь маркеры конфликтов, сравнить различия, вызывающие конфликт, и разрешить конфликт.

Для разрешения конфликтов можно:

  • Используйте Инструмент сравнения (Comparison Tool), чтобы объединить изменения между ревизиями.

  • Решите перезаписать один набор изменений другим.

  • Внесите изменения вручную путем редактирования файлов.

Дополнительные сведения об использовании инструмента сравнения для объединения изменений см. в разделе «Объединение текстовых файлов».

После того, как вы удовлетворены файлом, отмеченным как конфликтующий, можно пометить конфликт как разрешенный и зафиксировать файл.

Разрешение конфликтов

  1. Поиск конфликтующих файлов в браузере текущей папки.

  2. Проверьте столбец состояния системы контроля версий (SVN или Git) на наличие файлов с красным предупреждающим символом, что указывает на конфликт.

  3. Щелкните правой кнопкой мыши конфликтующий файл и выберите Source Control > View Conflicts, чтобы сравнить версии.

  4. Рассмотрим конфликт. Откроется отчет о сравнении, который показывает различия между конфликтующими файлами.

    С SVN сравнение показывает различия между файлом и версией файла, находящегося в конфликте.

    При Git™ сравнение показывает различия между файлом в вашей ветви и ветвью, в которую вы хотите объединиться.

  5. Используйте отчет Инструмент сравнения, чтобы определить, как разрешить конфликт.

    Можно использовать Инструмент сравнения (Comparison Tool), чтобы объединить изменения между редакциями, как описано в разделе Объединить текстовые файлы (Merge Text Files).

  6. Когда вы разрешите изменения и хотите зафиксировать версию в своей песочнице, в браузере Текущей папки щелкните правой кнопкой мыши файл и выберите Source Control > Mark Conflict Resolved.

    При помощи Git статус ветви в диалоговом окне «Сведения о системе контроля версий» изменяется с MERGING на SAFE.

  7. Зафиксировать измененные файлы.

Объединение текстовых файлов

При сравнении текстовых файлов можно объединить изменения из одного файла в другой. Объединение изменений полезно при разрешении конфликтов между различными версиями файлов.

Если вы видите маркеры конфликта в отчете о сравнении текста, таком как этот:

<<<<<<< .mine
затем извлеките маркеры конфликта перед слиянием, как описано в Выделение маркеров конфликтов.

Совет

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

  1. В отчете Инструмент выберите различие в отчете и нажмите Merge. Выбранное различие копируется из левого файла в правый.

    Объединённые различия отображают подсветку серых строк и зеленую стрелу слияния.

    Имя объединенного файла в верхней части отчета отображается со звездочкой (filename.m*), чтобы показать, что файл содержит несохраненные изменения.

  2. Щелкните Save Merged File, чтобы сохранить файл в изолированной программной среде. Чтобы разрешить конфликты, сохраните объединенный файл через конфликтующий файл.

  3. Если необходимо просмотреть файлы в редакторе, щелкните ссылки на номера линий в отчете.

    Примечание

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

  4. Когда вы разрешили изменения, отметьте их как разрешенные конфликты. Щелкните правой кнопкой мыши файл в браузере Текущей папки и выберите Source Control > Mark Conflict Resolved.

Выделение маркеров конфликтов

Что такое маркеры конфликтов?

Инструменты системы контроля версий могут вставлять маркеры конфликтов в файлы, которые вы не зарегистрировали как двоичные (например, текстовые файлы). Можно использовать MATLAB® чтобы извлечь маркеры конфликта и сравнить файлы, вызывающие конфликт. Этот процесс помогает вам решить, как разрешить конфликт.

Внимание

Зарегистрируйте файлы с помощью инструментов системы контроля версий, чтобы предотвратить их вставку маркеров конфликтов и повреждение файлов. Смотрите Регистр Двоичных Файлов с SVN или Регистр Двоичных Файлов с Git. Если ваши файлы уже содержат маркеры конфликтов, средства MATLAB могут помочь вам решить конфликт.

Маркеры конфликтов имеют следующую форму:

<<<<<<<["mine" file descriptor]
["mine" file content]
=======
["theirs" file content]
<<<<<<<["theirs" file descriptor]

Если вы пытаетесь открыть файл, содержащий маркеры конфликта, откроется диалоговое окно «Обнаруженные маркеры конфликта». Следуйте инструкциям, чтобы исправить файл путем извлечения маркеров конфликта. После извлечения маркеров конфликта разрешите конфликты, как описано в разделе «Изучение и разрешение конфликтов».

Чтобы просмотреть маркеры конфликтов, в диалоговом окне «Найденные маркеры конфликтов» нажмите кнопку Load File. Не пытайтесь загрузить файлы, потому что MATLAB не распознает маркеры конфликтов. Вместо этого щелкните Fix File, чтобы извлечь маркеры конфликта.

MATLAB проверяет только конфликтующие файлы на наличие маркеров конфликтов.

Выделение маркеров конфликтов

Когда вы открываете конфликтующий файл или выбираете View Conflicts, MATLAB проверяет файлы на наличие маркеров конфликтов и предлагает извлечь маркеры конфликтов. MATLAB проверяет только конфликтующие файлы на наличие маркеров конфликтов.

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

  1. В браузере Текущей папки щелкните правой кнопкой мыши файл и выберите Source Control > Extract Conflict Markers to File.

  2. В диалоговом окне «Выделение маркеров конфликтов в файл» оставьте опцию по умолчанию, чтобы скопировать «мою» версию файла через конфликтующий файл. Установите флажок Compare extracted files. Нажмите Extract.

  3. Как обычно, используйте отчет Инструмент, чтобы продолжить устранение конфликта.