Liberare spazio nel mio repository SVN


8

Ho un repository SVN ospitato su un sito freemium con una dimensione massima di repository. Mentre mi avvicino a questa capacità, sono a conoscenza dei file che ho verificato e che so di poter rimuovere permanentemente per liberare spazio su disco. Come faccio a dire a SVN che un file non può solo essere eliminato, ma è anche storia?

Risposte:


7

come dice Hubert, svnadmin packimpacchetterà tutti i singoli file di repository in una directory in un unico grande file. Questo ti farà risparmiare un po 'di spazio, ma rimanda solo il giorno della resa dei conti per te. (dovrebbe rendere le operazioni di cronologia più veloci, quindi è comunque un buon suggerimento). Una cosa da notare è che funziona solo su directory frammentate (cioè la nuova struttura di directory consiste nel mettere 1000 revisioni in una singola directory, quindi avviare una nuova directory) e racchiude solo le vecchie directory di shard, non quella con la revisione corrente dentro.

Pertanto, l'unica opzione è eliminare le vecchie revisioni dalla cronologia. Ciò richiede svnadmin dump e load, con facoltativamente un filtro per rimuovere le directory nel tuo repository che non ti servono più. (ad es. vecchie filiali temporanee).

Eseguire il dump è semplice: svnadmin dump -r xxx:HEADdove xxx è la revisione più vecchia che si desidera conservare (ovvero questo scaricherà le revisioni più recenti, quindi la revisione antica verrà scartata, come l'archiviazione). Puoi conservare l'archivio delle vecchie revisioni scaricandole anche ( svnadmin dump -r 1:xxx)

Una volta che hai il tuo dumpfile, caricarlo è facile come eseguire svnadmin load passando il nome del dumpfile. potrebbe essere una buona idea eliminare il vecchio repository prima di caricarne uno nuovo - in tal caso si ottengono i vantaggi delle ultime proprietà del filesystem del server, se non sono già disponibili.

Se si desidera mantenere tutte le vecchie revisioni ma filtrare determinate directory, è necessario eseguire il file di dump tramite svndumpfilter , che rimuoverà i percorsi specificati. Ricorda che vorrai scaricare senza usare l'opzione --incremental.

Ovviamente, prova tutte le operazioni localmente - esegui il dump in un file locale, quindi caricalo in un repository temporaneo sull'unità locale (sarà anche più veloce) e verifica che la cronologia e l'ultima versione funzionino correttamente - Esporto l'ultima revisione in un directory e utilizzare winmerge per verificare che i file siano identici a un'esportazione dell'ultima revisione dal repository live. Provalo anche con una revisione storica se vuoi essere paranoico.


3

Dalle FAQ di Subversion :

Il progetto ha in programma ... di implementare un giorno un comando cancellato svnadmin che compirebbe il compito di eliminare definitivamente le informazioni.

...

Nel frattempo, l'unica soluzione è svnadmin dump del repository, quindi reindirizzare il file di dump tramite svndumpfilter (escluso il percorso errato) in un comando di caricamento svnadmin.


2

Non è possibile rimuovere un file dal repository SVN senza eseguire la svnadmin dump; svndumpfilter; svnadmin loaddanza. È possibile ridurre le dimensioni del repository se si utilizza FSFS, basta eseguirlo svnadmin packnella directory repo.


0

Generalmente è una cattiva idea rimuovere i file da un repository sotto il controllo della versione.

Non sono sicuro di aver capito bene, ma è così che lo capisco. Il controllo della versione riguarda checksum univoci. Se rimuovi qualcosa, c'è il rischio che questi checksum vengano riutilizzati, il che porta a conflitti. Semplicemente non vale la pena attenuare in questo modo un problema di spazio su disco insufficiente, aggiornare meglio il piano dati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.