Я рассматриваю возможность использования git для контроля версий проекта, который не является исходным кодом. В этом проекте есть файл xml, в котором хранятся объекты с уникальными идентификаторами. Я боюсь, что если две ветви добавят оба объекта одного типа, эти новые объекты будут иметь одинаковые идентификаторы, и при объединении этих идентификаторов будет иметь место относительно простым способом?
Редактировать: Вот рабочий процесс, о котором я думаю:
- Для разработки файла xml используется внешнее программное обеспечение. Пример этого XML файла приведен ниже.
- Файл xml (и дополнительные файлы) находятся в папке, с которой вызывается
git init
. - Этот репозиторий git помещается в удаленный репозиторий.
- Различные члены команды разветвляются / разветвляются из удаленного репозитория на своих локальных устройствах. Они вносят изменения, в том числе добавление объектов. Внешнее программное обеспечение автоматически назначает идентификаторы объектов, которые на 1 больше максимального идентификатора (для этого типа объектов).
Члены команды фиксируют изменения локально, и в конечном итоге pu sh возвращаются в удаленное хранилище для слияния в главную ветвь.
Как мне управлять этим слиянием, чтобы предотвратить столкновение двух идентификаторов объектов в файле XML, если два пользователя добавили один и тот же тип объекта?
Пример файла:
<net>
<ObjectAs>
<ObjectA id=1 some=thing>
<ObjectA id=2 some=else>
</ObjectAs>
<ObjectBs>
<ObjectB id=1 some=thing>
<ObjectB id=2 some=else>
</ObjectBs>
</net>
Возможный коммит из редактора A:
<net>
<ObjectAs>
<ObjectA id=1 some=thing>
<ObjectA id=2 some=else>
+++<ObjectA id=2 some=1>
</ObjectAs>
<ObjectBs>
<ObjectB id=1 some=thing>
<ObjectB id=2 some=else>
</ObjectBs>
</net>
Возможный коммит из редактора B:
<net>
<ObjectAs>
<ObjectA id=1 some=thing>
<ObjectA id=2 some=else>
+++<ObjectA id=2 some=2>
</ObjectAs>
<ObjectBs>
<ObjectB id=1 some=thing>
<ObjectB id=2 some=else>
</ObjectBs>
</net>
Очевидно, что эти правки будут конфликтовать, если добавить два объекта ObjectA с одинаковым идентификатором. Однако, если я правильно понимаю git, он с удовольствием объединит их и добавит обе строки.
Как мне управлять этим слиянием, чтобы предотвратить столкновение двух идентификаторов объектов в файле XML, если два пользователя добавили один и тот же тип объекта?