Come rimuovere tutti i file binari da un repository SVN per ridurne la dimensione?

Vorremmo ridurre le size di un repository purgando tutti i file binari di solito file zip che non sono orientati allo sviluppo. Qualsiasi modo semplice per rimuoverli?

  • Come si accede ai file di server fisici VisualSVN?
  • Pacchetti SLES Devel?
  • Come gestire un repo di pacchetti YUM in casa?
  • Subversion tutti possono fare checkout
  • Perché il mio post-commit Apache Subversion hook non funziona?
  • Cerca grandi check in un repository di sovversione
  • 4 Solutions collect form web for “Come rimuovere tutti i file binari da un repository SVN per ridurne la dimensione?”

    suppongo che tu voglia diminuire la dimensione del repository [sul server], non solo il contenuto controllato.

    per quanto so che solo modo per rimuovere qualcosa in modo permanente da svn è quello di:

    1. eseguire il deposito di repository
    2. rimuovere manualmente i file / modifiche indesiderati da questi file dal dump
    3. ricreare repository

    in questo modo conserverai la storia e tutti i meta-dati, ma potrai eliminare i file indesiderati [ad es. binari].

    Sfortunatamente no.

    Attualmente non esiste un modo semplice per rimuovere completamente i file da un repository SVN. Questa caratteristica (solitamente chiamata obliterate ) è stata richiesta dal 2001, ma non è ancora stata implementata. Vedere il rapporto di errore per tutti i dettagli.

    La soluzione per il momento è quella di scaricare il repository, filtrare il dump, quindi reimportre. Questo è spiegato nel libro standard , Controllo della versione con Subversion.

    Il modo migliore per impedire alle persone di controllare i file che non desideri è utilizzare il hook pre-commit. Rifiuta (cioè restituisce un valore non 0) se uno qualsiasi dei file del commit corrisponde a un pattern. L'utente riceverà il messaggio quando provano a impegnarsi. È ansible impostare l'ignorazione globale, ma che si applica solo al client, se un client è installato senza impostare l'ignoranza, tentano felicemente di controllare ciò che vogliono.

    per esempio. (utilizzando i file batch di Windows, sarai meglio con perl) per limitare le estensioni di file specifiche e restituire i file difettosi con un messaggio all'utente:

    @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 

    Dove ignorare-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$ 

    È inoltre ansible impedire agli utenti di aggiungere file binari ignorando che è necessario modificare ~ / .subversion / config e cercare ignorazioni globali. Se la row è commentata, rimuovere il carattere di libbra.

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

    in modo da poter aggiungere ciò che vuoi, ho usato per mantenere il mio archivio pulito da file temporanei mac os.

    Spero che ti aiuterà.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.