Come posso rimuovere i dati dal repository SVN locale?


2

Ho accidentalmente impegnato un sacco di file binari usando l'opzione "Aggiungi cartella" di TortoiseSVN quando avrei dovuto usare semplicemente "Crea cartella". Non voglio questi file binari in SVN perché nascondono molto spazio sul mio HD e non traggono comunque alcun vantaggio dal controllo delle versioni. Tuttavia, non sono sicuro del modo migliore per ripristinare questo pasticcio in modo tale da liberare effettivamente la memoria utilizzata per il commit di tutti quei file binari. Posso facilmente eliminare tutti i file e eseguire il commit, ma non sono sicuro che questo effettivamente rimuoverà i loro dati associati da SVN, in particolare dalla revisione in cui sono stati aggiunti.

Ho cercato nella directory del repository SVN e ho trovato un file gigantesco "db / revs / 67" che presumo rappresenti i dati per la revisione 67 in cui sono stati aggiunti questi file. Posso semplicemente eliminare quel file o causerà problemi per SVN? Sembra che dovrei eliminare o modificare i file altrove, così SVN si comporta come se quelle revisioni non fossero mai esistite?

Risposte:


3

Per rimuovere in modo sicuro una revisione dalla cronologia SVN, è necessario esportare il repository con la revisione rimossa, quindi ripristinarla dal file di dump. Per fare ciò, eseguire i seguenti comandi su un terminale o al prompt dei comandi di Windows:

svnadmin dump /path/to/repo -r1:66 > svn.dump
ren /path/to/repo /path/to/backup
svnadmin create /path/to/repo
svnadmin load /path/to/repo < svn.dump

(Sui sistemi * nix, sostituire rencon mv.)

Una volta che sei sicuro che tutto sia a posto nel nuovo repository, puoi eliminare il backup.

Prendere in considerazione l'utilizzo della svn:ignoreproprietà per impedire che tali file vengano sottoposti a commit nel repository in futuro. È possibile aggiungere file all'elenco di ignorare con TortoiseSVN facendo clic con il tasto destro su di essi, andando su TortoiseSVN e scegliendo Aggiungi per ignorare l'elenco .


Grazie. Non ho molta familiarità con il prompt dei comandi, puoi chiarire: 1) Come posso ottenere il prompt dei comandi per riconoscere questi comandi? 2) Ogni riga è un nuovo comando? 3) Quando devo specificare dove mettere la copia, è nella seconda riga "percorso / a / backup"?
Aaron,

... nel frattempo ho eliminato / db / revs / 67 e / db / revprops / 67 e modificato / db / current da "67 1h5 p" a "66 1h5 p" su una copia dell'intera directory repo. Sembra aver funzionato.
Aaron,

@Aaron: il Prompt dei comandi in Windows è disponibile in Start> Tutti i programmi> Accessori. Ogni riga è un nuovo comando (ad esempio, premere Invio dopo ognuna.) Da quanto ho capito, l'eliminazione dell'ultima revisione non dovrebbe causare alcun problema, ma se fosse stata una precedente il repository avrebbe smesso di funzionare.
Patch

Ogni volta che ho provato i comandi svn diceva semplicemente "svnadmin non è un comando riconosciuto" o simile. Suppongo di aver bisogno di spostarlo in qualche eseguibile svn da qualche parte, ma non sono riuscito a capirlo.
Aaron,

@Aaron: Dovrebbe essere C:\Program Files\Subversion\bin(forse C:\Program Files (x86)\Subversion\binsu Windows a 64 bit) ma se fosse arrivato con TortoiseSVN avrebbe potuto metterlo in un posto diverso. Puoi guardarti intorno Program Fileso Program Files (x86)cartelle per essere sicuro. Passare a quella directory con il cdcomando seguito da uno spazio con il percorso tra virgolette.
Patch
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.