Варианты этого вопроса были заданы раньше, но, похоже, проблема нарушения других членов команды не упоминалась. В существующих сообщениях (см. Как "отменить преобразование" файла в svn и/или git) принятый ответ обычно должен запускаться svn rm FILE
или svn rm --keep-local FILE
, а затем при необходимости установите свойство svn:ignore
. Я провел последние 20 минут с этим (проверяя репо в двух местах, удаляя файл из одного, затем обновляя другой и т.д.). Вот что я нашел (я использую SVN 1.6.16):
Прежде всего, из того, что я могу сказать, флаг -keep-local не влияет на то, что происходит со всеми остальными, которые потом будут обновляться из репозитория. Для них это выглядит так же, как если бы вы только что сделали обычный svn delete
(ни одна из документации по subversion, которую я видел, не упоминает это явно - может быть, должно быть очевидно, что вы все еще выполняете операцию svn delete
и что "продолжайте локальный" будет влиять только на вещи на местной стороне, но это не обязательно было очевидно для меня).
Итак, есть два случая: 1. член команды A удаляет файл, в котором член команды B не имеет локальных модификаций, или 2. член команды A удаляет файл, в котором член команды B имел незафиксированные локальные изменения.
В 1, после удаления происходит B файл был удален. Теперь ему нужно восстановить его самостоятельно (т.е. svn merge -rHEAD:XXX FILE; svn revert FILE
, чтобы вернуть версию XXX файла FILE в рабочий каталог и не перехватывать ее при следующей фиксации)
В 2, B видит Tree Conflict при обновлении, а FILE теперь имеет статус A + C
с сообщением "Локальное редактирование, входящее удаление после обновления" под ним. На данный момент я не совсем уверен, что такое рекомендуемое решение. То, что я сделал, это скопировать FILE в другое место, чтобы быть в безопасности, а затем запустить svn revert FILE
. Это оказалось ненужным, потому что ФАЙЛ по-прежнему существует без преобразования в рабочий каталог со всеми локальными модификациями. Но я не знаю, насколько я этому доверяю, так как мои незафиксированные изменения стираются svn revert
в других сценариях.
tl; dr: действительно ли это, что единственный способ un-version файла в SVN - удалить его из рабочего каталога всех остальных в команде и заставить их восстановить его самостоятельно? Я использую -keep-local неправильно или отсутствует другой подобный вариант?