Как удалить файл из системы управления версиями, не удаляя его?



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



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



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


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

463   3  

3 ответов:

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

$ svn rm --keep-local my_important_file

удаление файла из 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

Это так откровенно некрасиво, что вряд ли можно назвать "решением". Тем не менее, это всегда позволяло быстро ремонтировать любые более поздние аварии.

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

ls -a .svn

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

rm -r .svn

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

svn status

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

Я надеюсь, что это помогает.

Comments

    Ничего не найдено.