Назад | Перейти на главную страницу

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

Мы хотели бы уменьшить размер репозитория, удалив все двоичные файлы, обычно zip-файлы, которые не предназначены для разработки. Есть какой-нибудь простой способ их удалить?

Я предполагаю, что вы хотите уменьшить размер репозитория [на сервере], а не только извлеченный контент.

насколько я знаю единственный способ удалить что-либо из svn навсегда - это:

  1. запустить дамп репозитория
  2. вручную удалить ненужные файлы / изменения в этих файлах из дампа
  3. воссоздать репозиторий

таким образом вы сохраните историю и все метаданные, но избавитесь от ненужных файлов [например, двоичных файлов].

К сожалению нет.

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

На данный момент временным решением является сброс репозитория, фильтрация дампа и повторный импорт. Это объяснено в стандартной книге, Контроль версий с помощью Subversion.

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

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

@echo off

svnlook log -t "%2" "%1" | d:\tools\grep -c "[a-zA-z0-9]" > nul
if %ERRORLEVEL% NEQ 1 goto DISALLOWED

echo Please enter a check-in comment 1>&2
exit 1


:DISALLOWED
svnlook changed -t %2 %1 > c:\temp\pre-commit.txt

rem ** remember to set the TruncatedExtensions registry setting to 0 ** 
rem ** or .resx will be matched as if it was .res **

findstr /G:"%1\hooks\ignore-matches.txt"  c:\temp\pre-commit.txt > c:\temp\precommit-bad.txt
if %ERRORLEVEL% NEQ 0 exit /b 0

echo disallowed file extension >> c:\temp\precommit-bad.txt
type c:\temp\precommit-bad.txt 1>&2
exit 1

Где ignore-match.txt:

^[^D].*\.aps$
^[^D].*\.vbw$
^[^D].*\.obj$
^[^D].*\.ncb$
^[^D].*\.plg$
^[^D].*\.bsc$
^[^D].*\.ilk$
^[^D].*\.exp$
^[^D].*\.sbr$
^[^D].*\.opt$
^[^D].*\.pdb$
^[^D].*\.idb$
^[^D].*\.pch$
^[^D].*\.res$
^[^D].*\.suo$
^[^D].*\..*scc$
^[^D].*\\Debug
^[^D].*\.user$

Вы также можете запретить пользователям добавлять двоичные файлы, игнорируя их, вам нужно отредактировать ~ / .subversion / config и искать global-ignores. Если строка закомментирована, удалите символ решетки.

global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store ._* *.log *.bak 

поэтому вы можете добавить то, что хотите, я использовал его, чтобы очистить свой репозиторий от временных файлов Mac OS.

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