Удаление файла из SVN без локального его удаления нигде не является распространенной проблемой.Одним из ярких примеров является файл .classpath в проекте Eclipse.Поместить этот файл конфигурации в SVN изумительно, если все машины, используемые в проекте, имеют одинаковую установку Eclipse и Java.Как только это условие нарушается, коммиты начинают разрушать другие проекты Eclipse.Это тот момент, когда нужно удалить файл из SVN, нигде не удаляя его.
svn rm --keep-local .classpath
отлично справляется с работой на одном компьютере и в тот момент.
Проблема в том, что другие машины могут потерять этот файл (при обновлении) или воскресить его (при фиксации).Недостаток SVN - ни обрабатывать --keep-local
в хранилище, ни распространять его на другие рабочие копии.Следовательно, на всех других машинах, указанных выше, команда должна быть выполнена - лучше всего перед любым коммитом или обновлением.
Это, конечно, будет работать в лучшем случае на 90%.Удаление и повторные версии будут происходить внезапно.Мое решение состоит в том, чтобы иметь все машины, к которым у меня есть прямой или косвенный доступ, делать
svn rm --keep-local .classpath
copy .classpath .classpath-nameOfTheMachine
svn add .classpath-nameOfTheMachine
Это так безобразно, что вряд ли можно назвать «решением».Тем не менее, это всегда позволяло быстро ремонтировать любые последующие аварии.