Уничтожение огромного файла в репозитории SVN

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
17
задан Jon Seigel 14 March 2010 в 20:26
поделиться

4 ответа

Некоторая дополнительная информация об этом может быть найдена в сообщении в блоге: Подверсия Стирает, недостающая возможность

убедиться прочитать комментарии также, где Karl Fogel рассматривает статью в истинном свете :-)

13
ответ дан 30 November 2019 в 12:08
поделиться

Для постоянного удаления файлов монстра из репозитория SVN нет никакого другого решения, чем использование svnadmin дампа/загрузки. ( Книга SVN: команда дампа)

, Чтобы препятствовать тому, чтобы огромные файлы фиксировались, сценарий рычага может использоваться. У Вас мог быть, например, сценарий, который выполнил "предварительную фиксацию" каждый раз, когда кто-то пытался согласиться на репозиторий. Сценарий мог бы проверить размер файла или тип файла, и отклонить фиксацию, если бы это содержало файл или файлы, которые были слишком большими, или "запрещенного" типа.

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

сценарий рычага А является сценарием, который работает в ответ на ответ на события репозитория ( Книга SVN: Создайте рычаги ).

17
ответ дан 30 November 2019 в 12:08
поделиться

Если можно поймать его, как только это фиксируется, метод дампа/загрузки svnadmin не слишком болезненный. Предположим, что кто-то просто случайно фиксировал gormundous-raw-image.psd в Пересмотре 3849. Вы могли сделать это:

svnadmin dump /var/repos -r 1:3848 > ~/repos_dump

, Который создал бы файл дампа, содержащий все до и включая Пересмотр 3848. В той точке Вы могли использовать svnadmin, создают, и svnadmin загружаются для воссоздания репозитория без незаконной фиксации, при этом протест состоит в том, что любые изменения, которые Вы внесли в структуре каталогов репозитория - рычагах, символьных ссылках, изменениях разрешения, подлинных файлах, etc. - должны будут быть скопированы со старого каталога. Вот пример остальной части сессии удара, которую Вы могли бы использовать для завершения операции:

svnadmin create /var/repos-new
svnadmin load /var/repos-new < ~/repos_dump
cp -r /var/repos/conf /var/repos-new
cp -r /var/repos/hooks /var/repos-new
mv /var/repos{,-old} && mv /var/repos-new /var/repos

я уверен, что это будет более болезненно больше истории, которую имеет Ваш репозиторий, но это действительно работает.

3
ответ дан 30 November 2019 в 12:08
поделиться

После того как Вы удалили файл из своего ГЛАВНОГО пересмотра, он не замедляет Вас на рабочей скорости, поскольку ony дельты между изменениями обрабатываются. (Резервные копии репозитория должны, конечно, обработать загрузку).

1
ответ дан 30 November 2019 в 12:08
поделиться
Другие вопросы по тегам:

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