2010-03-28 12 views

risposta

6

La risposta è nel Subversion FAQ:

Ci sono casi particolari in cui si potrebbe desiderare di distruggere tutte le prove di un file o commettere. (Forse qualcuno commesso accidentalmente un documento riservato). Questo non è così facile, perché Subversion è volutamente progettato per mai perdere le informazioni. Le revisioni sono gli alberi immutabili che si basano su un altro . Rimozione di una revisione da storia causerebbe un effetto domino, creare il caos in tutte le successive revisioni e possibilmente invalidare tutte le copie di lavoro.

Il progetto ha piani, però, di un giorno implementare un comando svnadmin obliterate che realizzare il compito di permanentemente eliminazione delle informazioni. (Vedere problema 516.)

Nel frattempo, l'unica soluzione è al svnadmin discarica repository, quindi tubo del dumpfile attraverso svndumpfilter (escluso il cattivo percorso) in un comando di carico svnadmin. Vedi capitolo 5 del libro di Subversion per dettagli su questo.

+0

grazie per quello, ecco un buon articolo a riguardo: http://blog.projectnibble.org/2008/03/01/subversion-obliterate-the-forgotten-feature/ cheers – Marcin

0

rm -rf sul repository di solito funziona bene.

+0

che dire interno svn db? – Marcin

+0

Ho avuto l'impressione che svn mantenga il suo database da qualche parte nel repository del server, quindi anche il nuking del repository verrà eliminato. Potrei sbagliarmi comunque. – che

1

No, non credo ci sia.

Se è davvero necessario rimuovere completamente i file dalla cronologia SVN, penso che l'unico modo per farlo sarebbe quello di scaricare il repository, filtrare i file che non si desidera con svndumpfilter e quindi ricreare il file repository dal dump.

Perché vuoi farlo?

+0

Ho un progetto che vorrei rimuovere completamente dal mio repository. – Marcin

0

questo è come fare questo su Linux:

/>svnadmin dump /path/to/repos > proj.dump 
/>cat proj.dump | svndumpfilter exclude somefolder > cleanproj.dump 
/>service svn stop 
/>BACKUP /path/to/repos/conf /path/to/repos/hooks (all custom configuration for this repository) 
/>DELETE /path/to/repos 
/>svnadmin create /path/to/repos 
/>RESTORE /path/to/repos/conf /path/to/repos/hooks 
/>svnadmin load /path/to/repos < cleanproj.dump 
/>service svn start 

fatto

0

Sto assumendo che si sta parlando di più progetti sotto lo stesso repository:

myrepo/ 
     project1/ 
     project2/ 

Se vuoi semplicemente che un progetto "scompaia" senza rovinare la cronologia del repository, puoi semplicemente nascondere questo percorso se stai utilizzando un autentico meccanismo di ication che utilizza authz. In altre parole, si è non utilizzando 'svn + ssh' per accedere al repository.

Diciamo che ho già un gruppo nel mio AuthZ chiamato 'tutti'. Nel mio authz imposterò qualcosa del tipo:

[/project1]: 
    @everyone = 
+0

Mi piacerebbe averlo eliminato non nascosto , Grazie. – Marcin

Problemi correlati