Справка по MetaEditorПроекты и MQL5 StorageСлияние версий

Слияние изменений

При совместной работе над групповым проектом возможна ситуация, когда одни и те же файлы параллельно редактируются несколькими пользователями. Чтобы такие изменения не терялись, перезаписывая друг друга, в MetEditor встроена функция слияния данных (merging).

Если вы попытаетесь сохранить в хранилище файл, который уже был кем-то изменен, MetaEditor предложит вам сначала получить последние изменения. При получении изменений будет выполнена попытка слияния данных: применение изменений из хранилища к локальной копии данных с попыткой сохранить текущие локальные изменения.

  • Слияние работает только для текстовых файлов с исходным кодом (mq4, mq5, mqh, cpp, h) в формате ANSI. Файлы bmp и wav всегда полностью заменяются версией из старшей ревизии.
  • Файлы исходного кода сравниваются построчно. При возникновении конфликтов (например, в локальном файле и в соответствующем файле в хранилище изменена одна и та же строка) алгоритм слияния стремится к максимальному сохранению локальных изменений.

Пример слияния

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

Пример слияния двух файлов

После выполнения команды "Получить обновления из хранилища Получить обновления из хранилища" локальный файл останется без изменений, поскольку приоритет имеют локальные изменения. Однако если бы файл в хранилище содержал еще новую строку "x=0;", она была бы добавлена, а строка "return(true);" осталась бы без изменений:

Пример слияния двух файлов

  • Главный принцип слияния файлов — приоритет локальных данных. Алгоритм стремится к максимальному сохранению локальных изменений.
  • Существует множество видов конфликтов слияния данных. В данном разделе была рассмотрена лишь одна из наиболее простых ситуаций. Алгоритм слияния является сложным и осуществляет комплексный подход при анализе файлов. Более подробная информация о слиянии может быть найдена в книге, посвященной Subversion.