2010-08-26 2 views
112

Если я запустил svn rm file, файл будет удален из локальной рабочей копии.Как удалить файл из контроля версий без его удаления?

Что я делаю сейчас:

$ cp file file2 
$ svn rm file 
$ svn ci 
$ mv file2 file 

Как избежать SVN также удаление локального файла при использовании svn rm?

+0

Возможный дубликат [SVN Удалить файл из репозитория без удаления локальной копии] (http://stackoverflow.com/questions/542065/svn-remove-file-from-repository-without-deleting-local-copy) – Shai

ответ

250

Вы хотите использовать команду командной строки --keep-local. Это удаляет файл из контроля версий, не удаляя его из вашей файловой системы.

$ svn rm --keep-local my_important_file 
+2

Выиграл Это все еще удаляет его из систем других людей после их обновления? – Nyerguds

+1

@Nyerguds Это правильно, так как svn rm удаляет файлы из репозитория. Если вы хотите удалить файлы из репо, но держите их локально на своем компьютере, тогда вы должны использовать флаг выше. –

+3

@GregHilston Как я уже сказал, это действительно не помогает в проектах с несколькими программистами. Должен быть способ просто перевернуть файл везде. Наиболее распространенным случаем здесь являются локальные файлы настроек, которые были случайно совершены (очень распространены в Java-проектах), но их невращение не должно уничтожать файлы настроек других пользователей. – Nyerguds

-1

У меня нет ответа на этот конкретный вопрос, но у меня есть ответ на соответствующий вопрос, который, как удалить все файлы (т.е. не конкретный один) в директории из управления версиями без удаляя их локально. Это решение исходит из внедрения Scientific Linux.

ls -a .svn

должен показать каталог SVN, который хранит данные управления. Просто:

rm -r .svn

избавится от этого каталога. Затем введите:

svn status

будет производить «предупреждение: этот каталог не рабочая копия» ошибка, потому что он больше не находится под контролем версий.

Надеюсь, это поможет.

+0

Связанный вопрос? Удаление файла и удаление всей рабочей копии - это совершенно разные вещи ИМХО. – Melebius

6

Удаление файла из SVN без его удаления локально нигде не является общей проблемой. Одним из ярких примеров является файл .classpath в проекте Eclipse. Помещение этого файла конфигурации в SVN изумительно, если все машины, используемые в проекте, имеют одну и ту же установку Eclipse и Java. Как только это условие нарушено, он начинает разорвать другие проекты Eclipse. Это то, что нужно удалить файл из SVN без удаления ist в любом месте.

svn rm --keep-local .classpath 

делает работу отлично на одной машине и в этот момент времени.

Проблема в том, что другие машины могут потерять этот файл (при обновлении) или воскресить его (при фиксации). Ошибка SVN заключается в том, чтобы не обрабатывать --keep-local в репозитории и не распространять его на другие рабочие копии. Следовательно, на всех других машинах выше команда должна быть выполнена — лучше всего до фиксации или обновления.

Это, конечно же, будет работать на 90%, в лучшем случае. Исключения и повторные версии будут происходить внезапно. Мое решение состоит в каждой машине, у меня есть прямой или косвенный доступ, сделать

svn rm --keep-local .classpath 
copy .classpath .classpath-nameOfTheMachine 
svn add .classpath-nameOfTheMachine 

Это настолько откровенным некрасиво трудно назвать «решением». Тем не менее он всегда позволял быстро ремонтировать любые последующие аварии.

Смежные вопросы