Como remover todos os arquivos binários de um repositório SVN para diminuir seu tamanho?

3

Gostaríamos de diminuir o tamanho de um repositório, limpando todos os arquivos binários, geralmente arquivos zip que não são orientados ao desenvolvimento. Qualquer maneira fácil de removê-los?

    
por Geo 29.07.2009 / 17:42

4 respostas

12

Eu suponho que você queira diminuir o tamanho do repositório [no servidor], não apenas o conteúdo retirado.

tanto quanto eu sei , a única maneira de remover algo permanentemente do svn é:

  1. executar o despejo do repositório
  2. remova manualmente arquivos / alterações indesejados desses arquivos do dump
  3. recriar o repositório

Dessa forma, você preservará o histórico e todos os meta-dados, mas livrará-se de arquivos indesejados [por exemplo, binários].

    
por 29.07.2009 / 17:52
4

Infelizmente, não.

Atualmente, não há uma maneira simples de remover completamente os arquivos de um repositório SVN. Esse recurso (geralmente chamado de obliterar ), foi solicitado desde 2001, mas ainda não está implementado. Veja o relatório de erros para todos os detalhes.

A solução para o momento é despejar o repositório, filtrar o despejo e, em seguida, reimportar. Isso é explicado no livro padrão , Controle de Versão com Subversion.

    
por 29.07.2009 / 17:53
1

A melhor maneira de impedir que as pessoas verifiquem arquivos que você não deseja é usar o gancho de pré-consolidação. Rejeitar (ou seja, retornar um valor diferente de 0) se algum dos arquivos no commit corresponder a um padrão. O usuário receberá a mensagem quando tentar se comprometer. Você pode definir o global-ignores, mas isso só se aplica ao cliente, se um cliente for instalado sem configurar os ignores, eles tentarão verificar tudo o que quiserem.

por exemplo. (usando arquivos de lote do Windows, você ficará melhor com o perl) para restringir extensões de arquivo específicas e retornar os arquivos ruins com uma mensagem para o usuário:

@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

Onde ignore-matches.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$
    
por 17.08.2009 / 14:14
0

Você também pode impedir que os usuários adicionem arquivos binários, ignorando-os você tem que editar ~ / .subversion / config e procurar por global-ignores. Se a linha for comentada, remova o caractere de libra.

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

para que você possa adicionar o que deseja, usei-o para manter meu repositório limpo dos arquivos temporários do Mac.

Espero que isso ajude você.

    
por 04.08.2009 / 16:35