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