Согласование и закрепление изменений в версию ветви

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

По окончании редактирования именованной версии вы можете выполнить процессы согласования и закрепления для слияния ваших правок. Процесс извлечения любых изменений из версии default и слияния в ней изменений из вашей версии называется процессом согласования. После этого вы можете отправить изменения, внесенные в версию default. Это процесс закрепления изменений. С помощью пакетных версий вы всегда можете согласовать и закрепить изменения в версии default.

При согласовании именованной версии с версией по умолчанию будут найдены все возможные конфликты. Когда конфликты обнаруживаются во время операции согласования, они первоначально разрешаются в пользу версии редактирования. Вы получите запрос, спрашивающий, хотите ли вы просмотреть конфликты с помощью вида Конфликты. Здесь вы можете произвести их поочередный обзор и при необходимости внести любые изменения. Например, вы можете использовать вид Конфликты для замены целевой версией или использовать инструменты редактирования для изменения объекта в конфликте другим способом.

Процесс согласования только обновляет редактируемую версию: ArcGIS Pro может только произвести поиск конфликтов, он не производит внесение изменений в целевую версию. Закончив согласование и просмотр конфликтов, можно завершить процесс внесения изменений, закрепив свои изменения в целевой версии.

Примечание:
В этой статье описывается процесс согласования и закрепления с помощью вкладки Версии. Вы также можете согласовать и закрепить версии с помощью инструмента геообработки Согласовать версии и кнопки Согласовать/Закрепить Согласование и закрепление на вкладке Версии при работе с видом Версии.

Процесс согласования

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

Более подробно о предоставлении доступа

При работе с источниками данных версионных данных ветви можно воспользоваться инструментами Согласовать и Закрепить. Чтобы начать процесс согласования, щелкните кнопку Согласовать на вкладке Версии. Появится диалоговое окно Согласовать. Согласование версии для версионного набора данных ветви использует следующее условие:

  • Конфликты могут определяться по объекту или по атрибуту.
  • Конфликты всегда разрешаются в пользу редактируемой версии.

Для отмены изменений, внесенных после операции согласования источника данных разветвленных версий, нельзя использовать операции отмены.

При наличии конфликтов их можно просмотреть в виде Конфликты.

Просмотр конфликтов в виде Конфликты

Если в процессе согласования обнаруживаются конфликты, их можно просмотреть в виде конфликты Менеджер конфликтов. Этот вид можно закрепить в любой части приложения или расположить как плавающее окно. Этот позволяет взаимодействовать с видом Карта и одновременно просматривать и изучать данные. В виде Конфликты содержатся все конфликтующие классы объектов, а также их объекты и строки, которые находятся в конфликте. Классы конфликтов представляют собой векторные веб-слои конфликтов для всего сервиса.

Вид Конфликты позволяет выполнять следующее:

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

Конфликты возникают в следующих случаях:

  • Один и тот же объект обновляется в текущей версии, которая редактируется, и в целевой версии.
  • Один и тот же объект обновляется в одной версии и удаляется в другой.
  • Топологически связанный объект или класс отношений изменяется в текущей редактируемой версии и в целевой версии.

Если в версии ветви есть конфликты, ArcGIS Pro разрешает их в пользу версии редактирования.

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

Определение полей или строк, участвующих в конфликте

Все конфликтующие классы и объекты перечислены в списке в верхней левой части вида Конфликты. Этот список показывает общее количество конфликтов для векторных веб-слоев для всего сервиса.

Щелкните стрелку ниспадающего списка объектов, чтобы просмотреть конфликты для каждого объекта. Их можно разбить на следующие категории:

  • Обновить-Удалить – объект был обновлен в текущей версии и удален в целевой.
  • Удалить-Обновить – объект был удален в текущей версии и обновлен в целевой.
  • Обновить-Обновить – объект был обновлен в обеих версиях: текущей и целевой.

Когда вы выделяете отдельный объект ObjectID в этом списке, то в правой части от списка в виде Конфликты появляются поля и их атрибуты в версии до согласования, конфликтной версии и версии общего предка этого объекта.

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

  • Текущая – представляет текущее состояние объектов и атрибутов в именованной версии. Оно включает в себя любые внесенные вами изменения.
  • Целевая – представляет объекты и атрибуты в целевой версии.
  • Общий предок – представляет объекты и атрибуты, когда версия была первоначально создана или во время последней операции согласования.

Красный индикатор слева от строки означает наличие конфликта. Например, если геометрия объекта редактировалась в каждой версии, красная точка будет рядом с полем Shape.

Если конфликтовать будут другие атрибутивные поля, то красный индикатор появится слева от строки. Если какой-то объект был удален в любой версии, то для значения атрибута этой версии появится надпись <Deleted>.

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

Пометьте конфликты, как просмотренные и не просмотренные

После определения того, какие поля или строки конфликтуют, вы можете пометить пространственный объект как просмотренный. Вы также можете вести учет того, какие объекты в этом списке были просмотрены: отмеченные как просмотренные объекты больше не отображаются полужирным контуром.

Чтобы вернуться к конфликтующему объекту позднее, щелкните правой кнопкой мыши ObjectID в списке Конфликты, а затем нажмите кнопку Отметить как не просмотренный. После этого объект снова будет выделен жирной границей.

Если вы поставите отметку Фильтровать просмотренные конфликты вверху диалогового окна, вы сможете отфильтровать список, чтобы показать только ранее не просмотренные конфликты.

В разветвленных версиях можно также добавить заметку о просмотре. Щелкните правой кнопкой на объекте и выберите Добавить примечание просмотра, а затем введите текст в окно Добавить примечание просмотра. Чтобы изменить имеющееся примечание просмотра, щелкните правой кнопкой на объекте и выберите Изменить примечание просмотра.

Примечание:

Примечания просмотра очищаются при следующей операции согласование и закрепления.

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

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

В списке Различия щелкните правой кнопкой мыши версию, набор данных, объект или атрибут и выберите один из следующих вариантов замены:

  • Заменить текущей версией
  • Заменить целевой версией
  • Заменить версией общего предка

Ниже приведены различные уровни, на которых можно использовать варианты замены для разрешения конфликтов:

  • Замещение атрибутов

    Это происходит на уровне поля. При наличии конфликтов в атрибутах достаточно заменить значение атрибута в текущей версии значением из представления текущей версии, целевой версии или версии общего предка. Для этого щелкните правой кнопкой атрибут в конфликте и выберите в меню необходимую опцию.

  • Замещение пространственных объектов

    Это происходит на уровне строки. Можно заменить весь объект представлением объекта в текущей версии, целевой версии или версии общего предка. Это значит, что все поля в конфликте будут заменены.

  • Замещение на уровне классов

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

    Чтобы выбрать опцию замены на уровне класса, щелкните правой кнопкой имя класса объектов в списке Различия и выберите необходимую версию.

  • Полное замещение

    Это происходит на корневом уровне. Вследствие использования данной опции замещения все конфликтные объекты и классы объектов в списке заменяются выбранным представлением. При наличии нескольких классов объектов и нескольких объектов в конфликте все они заменяются выбранной версией.

    Щелкните правой кнопкой мыши версию и информацию о подключении наверху списка Различия и выберите версию, которую вы хотите использовать для замены всех конфликтов.

Фильтрация конфликтов на уровне поля

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

  • Выполняется пакетное обновление по одному полю в разных версиях.
  • Информация записывается в поле на основе изменений, выполненных в данной версии.

Для того чтобы задать фильтрацию от конфликтов для набора полей, можно использовать инструмент Добавить фильтр конфликта полей. Фильтр конфликтов полей позволяет отметить тегом поле или набор полей в пределах классов объектов, чтобы отфильтровать их при определении конфликтов. Это применимо только в случае, если вы определяете конфликты по атрибуту.

Примечание:

После применения фильтра конфликта полей к полю или набору полей при согласовании конфликты не будут идентифицироваться, если были отредактированы только те поля, для которых установлен фильтр. Если были отредактированы неотфильтрованные поля, и в целевой версии для этих полей существуют конфликты, при согласовании все поля (отфильтрованные и неотфильтрованные) в конфликте идентифицируются в виде Конфликт.

Версионные данные ветви всегда согласовываются в пользу версии редактирования. Фильтр конфликта полей содержит значение из редактируемой версии.

Инструмент Удалить фильтр конфликта полей может удалить эти фильтры из указанных полей.

Примечание:

Службы с версионными данными ветвей должны быть перезапущены, чтобы получить изменения от инструментов Добавить фильтр конфликта полей или Удалить фильтр конфликта полей.

Для того чтобы узнать, заданы ли фильтры конфликтов для класса объектов или таблицы, можно использовать функцию Python ListFieldConflictFilters.

Разрешение конфликтов с правилами атрибутов

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

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

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

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

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

  • Вы обновляете Первичное поле объектов-источников, разрывая отношение в версии A.
  • В то же самое время вы обновляете связанный объект-адресат в версии B.
  • Поскольку класс объектов-адресатов зависит от класса объектов-источников, то при согласовании версий будет обнаружен конфликт.

Другой пример:

  • В наборе классов объектов электросетей вы удалили столб, который имеет связь с трансформатором: это вызовет удаление связанного со столбом трансформатора.
  • В другой сессии редактирования, начавшейся в то же время, редактор изменил атрибуты трансформатора, который только что был удален, поскольку вы удалили связанный с ним столб.
  • При согласовании изменений будет обнаружен конфликт в обновлении-удалении.
Рассмотрим последний пример – если второй пользователь выбрал бы опцию замены всех конфликтов с использованием представлений редактируемой версии, то столб и трансформатор, удаленные в течение вашей сессии редактирования, были бы созданы заново. Помимо этого, был бы создан трансформатор из сессии второго редактора, что привело бы к появлению двух трансформаторов. Вы не смогли бы обнаружить этого на карте, потому что они были бы расположены друг на друге; однако в атрибутивной таблице вы бы могли увидеть две разные строки для объектов трансформаторов.

Закрепление изменений

Чтобы закрепить изменения в версии default после согласования и проверки конфликтов, щелкните Закрепить в группе Версии вкладки Версии.

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

После внесения изменений их нельзя отменить, поскольку вы закрепляете изменения в целевую версию.

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

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

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