Вопрос по svn, version-control, tortoisesvn – Можно ли полностью удалить файл из моего хранилища SVN?

12

Я использую SVN-черепаху для проекта, над которым я работаю в одиночку, и я (по ошибке) поместил огромный файл в свой репозиторий (База данных VC ++ Intellisense). Теперь я хочу удалить этот файл из своего хранилища, чтобы облегчить его резервное копирование.

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


EDIT

Решение @ryansstack сработало отлично, именно это я и сделал (я запускал команды в каталоге, где находился мой репозиторий):

Сначала я создал дамп хранилища, отфильтровывая этот огромный файл:

svnadmin dump tcc | svndumpfilter exclude "/trunk/Image Segmentation/Image Segmentation.ncb"  > tcc.bak

Затем я создал новый репозиторий (tcc2) и выполнил следующую команду:

svnadmin load tcc2 < tcc.bak

Теперь размер дампа tcc2 составляет 7 МБ против 170 МБ tcc.

Ваш Ответ

5   ответов
-1

ит мне, что это не может быть сделано. Единственный способ сделать это - запустить новый репозиторий и заархивировать старый на диск или что-то еще.

Не вносите никаких изменений в файл, особенно если это бинарный файл, потому что тогда я считаю, что SVN хранит несколько его копий.

SVN делает различия двоичных файлов.
-1

2

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

3

чтобы сделать что-то подобное, и, по сути, Subversion настроен так, что вы не можете просто удалить что-то подобное.

Но поскольку вы уже создаете резервную копию базы данных, вам следуетПроверь это, В итоге я сделал дамп своего репозитория, отфильтровал его и затем загрузил в новый репозиторий. Конечно, я уже выполнял цикл dump / filter / load по другим причинам, поэтому небольшая дополнительная фильтрация не добавила много работы. Если вы уже делаете резервную копию, вы можете сделать резервную копию текущего репо (я полагаю, вы делаете дамп или несколько инкрементных дампов для этого), отфильтровать эту конкретную ревизию с помощью svndumpfilter и перезагрузить из резервной копии.

РЕДАКТИРОВАТЬ: Тигр официально имеетвыпуск 516 на этом. & Quot; svn облитерировать & quot; команда запланирована, но еще не реализована.

22

http://subversion.apache.org/faq.html#removal

Вы не можете быстро, но есть способ

Красиво ответил.

Похожие вопросы