У меня есть распределенная система, которая использует XML-файлы в хранилище SVN в качестве средства связи (как вы можете догадаться из этого, общение обычно медленное). Некоторые узлы обработки добавляют или удаляют некоторые данные в хранилище, другой узел обработки принимает это как входное событие и реагирует соответствующим образом.
На данный момент все хорошо, но мне интересно, не возникнут ли у меня проблемы с автоматическим слиянием SVN.
Допустим, один узел добавляет определенное задание к другому узлу, добавив в файл XML строку, указывающую на другой файл XML с подробностями задания. Это похоже на следующий код:
----File: nodename.xml----
<assignments>
<file>537f7acb382326.xml</file>
<file>572919a90c0234.xml</file>
<file>58a7c3e2015922.xml</file>
</assignments>
Каждый файл, указанный в этом файле, является назначением задания для хоста nodename
. При выполнении задания соответствующая строка будет удалена правопреемником.
С точки зрения репозитория SVN у меня есть один «сумматор» и один «чтение и удаление». Один узел только добавляет строки в этот файл, один узел удаляет только строки из этого файла. Я могу гарантировать, что только один узел может добавить, и только один узел может удалить. Но: хотя имена файлов имеют уникальные идентификаторы, они могут быть добавлены повторно, поэтому строка может быть добавлена и удалена одновременно, что теоретически может вызвать проблемы.
Мой вопрос таков: есть ли гарантия, что SVN автоматически объединит одновременно «добавить строку» и «удалить строку» без взаимодействия с пользователем? Если нет, есть ли гарантия, если я добавлю отметку времени к каждой добавленной строке, делая каждую строку уникальной?