Можно ли полностью удалить файл из моего хранилища SVN? - PullRequest
13 голосов
/ 10 июля 2009

Я использую черепаховый 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 ]

22 голосов
/ 10 июля 2009

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

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

3 голосов
/ 10 июля 2009

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

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

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

2 голосов
/ 10 июля 2009

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

0 голосов
/ 03 сентября 2009

невозможно отменить зафиксированный файл из SVN.

0 голосов
/ 10 июля 2009

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

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

...