Come rimuovere ricorsivamente le directory .svn?


7

Come posso eliminare in modo ricorsivo tutte le directory .svn, a partire dalla directory in cui mi trovo?


1
Quale piattaforma - Windows? Linux / UNIX? Qualcos'altro?
Chris J,


È su Linux, Debian

Abbastanza divertente, ne avevo bisogno al mattino quando commettevo qualcosa in un repository mercuriale. Ho finito per aggiungere tutto e rimuovere le cartelle .svn prima di impegnarmi. E ora ti viene questa domanda, apparentemente la soluzione di Ned è ciò di cui avevo bisogno ...
Tamara Wijsman,

Risposte:


13

Tieni presente che svn fornisce il comando "export" che ti fornisce una copia dell'albero di lavoro, ma senza tutte le directory .svn cosparse. Questo potrebbe essere quello che vuoi.

$ svn export /tmp/copy_of_my_tree

questo non funzionerà per un repository, non hai accesso a (ad esempio zippato e spedito per posta)
mbx

9

Se lavori in Linux (o equivalente), puoi semplicemente fare quanto segue:

find . -name .svn -exec rm -rf {} \;

2
O, meglio, e come menziona Piskvor, usa -type dper assicurarti che non si stia cancellando accidentalmente qualcosa che non è una directory.
JdeBP,

7

In qualsiasi moderno sistema UN * X (Linux, Mac OS X, FreeBSD):

find . -type d -name '.svn' -exec rm -rf {} \;

trova:

  • nella directory corrente
  • directory
  • con il nome .svn
  • e quando trovato, esegui rm -rfsu ciascuno

4
Questo è quasi il linguaggio canonico. Hai dimenticato xargsdi ridurre il numero di rmprocessi necessari: find . -type d -name '.svn' -print0 | xargs -0 rm -rf --
JdeBP,

Per aggiungere al commento di @ JdeBP: Alcune findimplementazioni supportano anche -exec rm -rf {} +o addirittura -deleteper ottenere la stessa cosa.
Grawity,
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.