Это скорее гипотетический вопрос, но я всегда задавался вопросом, почему этот случай считается конфликтом. Если я локально удалил каталог, который уже был удален из репозитория, почему бы это не решить, как вы ожидали? Какое угловое дело я не думаю о том, что сделает конфликт необходимым?
Почему "локальное удаление, входящее удаление при обновлении" в каталоге является конфликтом?
Ответ 1
Я начал копаться в этом, и я думаю, что это может произойти из-за того, что SVN не совсем уверен, является ли delete
простым удалением или фактически move
(a copy
и a delete
). В документации говорится:
Поскольку перемещение в Subversion реализовано как операция копирования, за которой следует операция удаления, и эти две операции не могут быть легко связаны друг с другом во время обновления, все Subversion может вас предупредить о том, что вы выполняете операцию удаления на локально модифицированной файл. Эта операция удаления может быть частью перемещения или может быть подлинной операцией удаления.
Итак, похоже, чтобы быть в безопасности, SVN предупреждает вас, что вы должны обновлять. Конечно, он может игнорировать "конфликт" удаления и просто копировать новую папку, но я думаю, что некоторые метаданные могут быть потеряны с этим локально.
Одно потенциальное исправление заключается в том, чтобы локально изменить ваше изменение и разрешить удаление дескриптора входящего обновления.
Ответ 2
Конфликт деревьев появляется, когда вы запрашиваете SVN для включения изменения (слиянием или обновлением) в целевом файле или папке, которые не могут выполнить изменение. В вашем случае вы попросили SVN включить удаление папки, которая не существует в вашей локальной копии. Почему это необходимо? Это скорее предупреждение для вас, и для меня это было полезно, когда один парень пытался переместить каталог, когда другой попытался удалить его в другой ветке. Древовидный конфликт был так же, как вы описали, и это было реально. Ребятам пришлось решить эту проблему, решив, что делать с этой папкой.