Конфликт слияния с идентичными вновь созданными каталогами в IntelliJ IDEA с SVN

Предыстория:

Мы используем последнюю версию IntelliJ IDEA 2019.3.3 (Ultimate Edition) и SVN в качестве репозитория.

Проблема:

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

Пример принятия вашего и принятия их

Почему?

Если мы примем «их»-версию, мы «заменим» (как будет объявлено позже в «Обзоре затронутых файлов») весь наш каталог их версией и автоматически удалим наш контент, а если мы используем «вашу»-версию, мы полностью принять нашу версию, но удалить все контент-файлы "их" коммита. В этом случае нам нужна возможность объединиться в один каталог и принять оба содержимого.

Есть ли альтернативный способ решить эту проблему и принять содержимое обоих каталогов?

Например:

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

sameDirectory
|- UserOneFileOne.java

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

sameDirectory
|- UserTwoFileOne.java

результат принятия "Их" версии:

sameDirectory
|- UserOneFileOne.java

результат принятия "Вашей" версии:

sameDirectory
|- UserTwoFileOne.java

желаемый результат:

sameDirectory
|- UserOneFileOne.java
|- UserTwoFileOne.java

person Markus G.    schedule 06.03.2020    source источник


Ответы (1)


IntelliJ использует клиент svn для командной строки, а svn не поддерживает такие слияния. Это конфликт дерева, и для его решения нужно принять ту или иную ветвь дерева.

Если вы согласны с ходом, ваш bar.c лишний. Вы захотите удалить его и пометить конфликт дерева как разрешенный. Но подождите: вы внесли изменения в этот файл! Прежде чем удалять bar.c, вам нужно решить, нужно ли применить сделанные вами изменения в другом месте, например, в новом файле baz.c, где теперь находится весь код bar.c. Давайте предположим, что ваши изменения действительно должны «следовать за движением». Subversion недостаточно умен, чтобы сделать эту работу за вас[10], поэтому вам нужно перенести свои изменения вручную.

http://svnbook.red-bean.com/en/1.8/svn.tour.treeconflicts.html

person Dmitriy Smirnov    schedule 23.03.2020