Come si rimuove il controllo Subversion per una cartella?


259

Ho una cartella c:\websites\teste contiene cartelle e file che sono stati estratti da un repository che non esiste più. Come faccio a far sì che Subversion interrompa il tracciamento di quella cartella e delle sottocartelle e dei file?

So che potrei semplicemente eliminare la .svncartella, ma ci sono molte sottocartelle in molti livelli.


1
Se stai usando TortioseSVN, ho scritto un post sul blog che mostra il modo più veloce per farlo. Il mio post ha istruzioni dettagliate con le immagini. Tale post è disponibile all'indirizzo http://www.ecofic.com/about/blog/disconnecting-folder-from-svn
Chad Campbell,

Fai riferimento alla mia risposta che ha aiutato molti. stackoverflow.com/questions/4889619/…
Ajit Vaze

Risposte:


258

Inoltre, se stai usando TortoiseSVN, esporta nella posizione della copia di lavoro corrente e rimuoverà le cartelle e i file .svn.

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-export.html#tsvn-dug-export-unversion

Risposta aggiornata per Subversion 1.7:
In Subversion 1.7 la copia di lavoro è stata ampiamente rivista. Esiste solo una cartella .svn, situata nella base della copia di lavoro. Se si utilizza 1.7, è sufficiente eliminare la cartella .svn e il suo contenuto è una soluzione semplice (indipendentemente dall'uso di TortoiseSVN o degli strumenti da riga di comando).


8
Il link ora è un 404. Nuovo link: tortoisesvn.net/docs/release/TortoiseSVN_en/… L'esportazione in sovracorrente sembra essere solo un caso speciale che rimuove i file .svn solo se si dice di mantenere anche file non controllati.
lilbyrdie,

dopo aver rimosso con successo per ripristinare l'icona della cartella in normale riavviare il server svn e questo è tutto
3

Il server non avrebbe nulla a che fare con le icone delle cartelle di Tortoise. Ma se non si aggiornano, puoi provare a terminare il processo TSVNCache. Dovrebbe riavviarsi automaticamente.
crashmstr,

1
Nel mio caso, ho eliminato anche la cartella git insieme alla cartella .svn
Aftab Ahmed Kalhoro,

155

Su Linux, questo funzionerà:

  find . -iname ".svn" -print0 | xargs -0 rm -r

10
Funziona anche su Mac OS.
emish,

2
prima di eseguire il comando assicurarsi di inserire la directory corretta, esempio: cd mySVNdirectoryWhereToRemoveTheSubfolders
Camaleo

Ottengo rm: operando mancante
Winter

119

Prova svn export .

Dovresti essere in grado di fare qualcosa del genere:

svn export /path/to/old/working/copy /path/to/plain/code

E quindi basta eliminare la vecchia copia di lavoro.

TortoiseSVN ha anche una funzione di esportazione , che si comporta allo stesso modo.


4
Grazie per aver fornito una risposta che funziona con la riga di comando. :) Ottimo per quelli di noi che usano i terminali.
epochwolf,

16
Se ho capito bene, questo comando esporterà solo i file attualmente sotto controllo di sovversione. Quindi se alcuni file o cartelle non sono stati ancora aggiunti in modo sicuro a Subversion o sono stati rimossi dal controllo Subversion, perderai questi file durante l'esportazione ...
Chris

@ Chris, sì, hai ragione. Questo esporterà solo i file con versione. Questo è utile per esportare il codice e lasciare artefatti derivati, ecc., Ma potrebbe non essere lo strumento giusto per ogni lavoro.
pkaeding il

4
Vale la pena commentare che funziona ancora se il server SVN è scomparso da tempo; se si tenta di esportare utilizzando VisualSVN o Tortoise SVN, sembra provare a contattare il server, ma la versione della riga di comando sopra ha funzionato per me senza il server SVN ancora in esecuzione.
Dave,

Ottengo un errore:svn: E000002: Can't stat '/.classpath': No such file or directory
IgorGanapolsky il

32

Se stai utilizzando Windows, puoi fare una ricerca su quella cartella .svne questo li elencherà tutti. Premendo Ctrl+ Asi selezioneranno tutti e premendo Canc si rimuoveranno tutte le cose fastidiose di Subversion.


davvero fastidioso ;-) Ho solo bisogno di ripulirlo e lo rimetterò in un nuovo repository.
Brian Boatright,

2
questo è anche un ottimo modo per eliminare le cartelle di estensione frontpage ancora più fastidiose!
Brian Boatright,

Scarica e utilizza l'utilità Ricerca tutto per trovare ed eliminare le cartelle .svn alla velocità della luce :) voidtools.com Solo Windows!
endo64,


21

Ho scoperto che non è nemmeno necessario copiare in una posizione temporanea. Puoi fare un

svn export --force .

e i file .svn verranno rimossi in situ , lasciando gli altri file così come sono. Molto conveniente e meno soggetto a disordine.


4
Non so cosa sia, ma per qualche motivo non ha funzionato per me.
Ariete VII,

1
Questo comando funziona solo per la copia di lavoro, non per una cartella al suo interno. Forse una variante della stessa ...?

2
Questo non funzionerà se la versione installata di Subversion è 1.7 e il repository è per 1.6. Tuttavia, "svn upgrade" può essere eseguito prima dell'esportazione e funzionerà.
Peter Mortensen,

11

Senza sottotitoli in Linux per eliminare le .svncartelle:

find . -name .svn -exec rm -r -f {} +

rm = remove
-r = recursive (folders)
-f = force, avoids a lot of "a your sure you want to delete file XY".

8

Nessuna di queste risposte è stata soddisfacente per la mia situazione. Sono su Subversion 1.8 e avevo una copia funzionante che aveva solo una singola .svncartella nella primissima cartella, root. Tuttavia, volevo rimuovere alcuni rami dalla copia di lavoro.

Indipendentemente da ciò che facevo, ogni volta che eseguivo un 'aggiornamento' ripristinava quei file e li riportava indietro. Non volevo rimuoverli dal repository, solo dal mio computer - ma dovevo mantenere intatto il resto della copia di lavoro (quindi non potevo semplicemente rimuovere la cartella .svn).

Soluzione? svn update --set-depth exclude <dir>

Questo è un "aggiornamento" sul lato client che esclude una directory specifica. Può essere trovato nei manuali su svnbook.com . In breve, lo descrive come:

A partire da Subversion 1.6, puoi adottare un approccio diverso. Innanzitutto, controlla la directory per intero. Quindi esegui svn update --set-depth exclude sull'unica sottodirectory che non ti interessa.

Per TortoiseSVN, puoi anche fare la stessa cosa facendo clic con il pulsante destro del mouse sulla cartella che non desideri, fare clic su Update to revision..., quindi impostare la 'Profondità di aggiornamento' su Exclude, come mostrato in questa schermata:

inserisci qui la descrizione dell'immagine


Tuttavia, non è possibile rimuovere le cartelle radice della copia di lavoro.
JaBe

8

Ha funzionato bene nel mio caso:

find directory_to_delete/ -type d -name '*.svn' | xargs rm -rf

Questa è una soluzione così semplice, ma funziona come un fascino.
IgorGanapolsky

@IgorGanapolsky Sono contento. La mia soluzione ti è stata di aiuto.
Manikandan S

fintanto che nessuno ha eseguito mkdir -p ';echo Hi Johnny;/.svn'- in tal caso l'invocazione di {} di find dovrebbe comunque funzionare
Never Sleep Again

7

Usa il svn exportcomando:

cd c:\websites\test
svn export c:\websites\test_copy

Tutti i file sotto controllo versione verranno esportati. Ricontrolla per assicurarti di non aver perso nulla.


4

Basta rimuovere la cartella .svn all'interno della cartella richiesta, quindi il controllo verrà rimosso automaticamente.


3

Su Windows, è possibile aggiungere un collegamento rapido per quello al menu di scelta rapida di Explorer. Basta avviare questo script di registro:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Folder\shell\DeleteSVN]
@="Delete SVN Folders"

[HKEY_CLASSES_ROOT\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""

Ciò aggiungerà un elemento chiamato "Elimina cartelle SVN" al menu del tasto destro. Ciò eliminerà tutte le cartelle .svn in questa cartella e tutte le sottocartelle.

Fonte (tedesco): http://www.sjmp.de/software/alle-svn-ordner-und-dateien-loeschen/


2

Puoi usare "svn export" per creare una copia di quella cartella senza dati svn, oppure puoi aggiungere quella cartella per ignorare l'elenco


2

Per coloro che usano NetBeans con SVN, c'è un'opzione 'Subversion> Export'.


2

C'è anche un piccolo strumento open source chiamato SVN Cleaner che aggiunge tre opzioni al menu contestuale di Windows Explorer:

  • Rimuovi tutto .svn
  • Rimuovi tutto tranne radice .svn
  • Rimuovere i file Repo locali



1

La risposta è sorprendentemente semplice: esporta la cartella su se stessa ! TortoiseSVN rileva questo caso speciale e chiede se si desidera rendere senza revisione la copia di lavoro. Se si risponde sì, le directory di controllo verranno rimosse e si avrà un albero di directory semplice e senza precedenti.


1
Non è solo una nuova citazione della risposta accettata data 5 anni fa?
Ben Thurley,

1

Un'altra (più semplice) soluzione Linux:

rm -r `find /path/to/foo -name .svn`

1

IL MODO MIGLIORE E FACILE

Se pensi di poter vincere con un semplice comando magico, fallisci! SVN è davvero complicato e torna sempre in qualche modo con un nuovo messaggio di errore in Xcode. Prima o poi, prometti ... quindi devi farlo in modo intelligente!

Come sapete, la prassi migliore e regolare in Xcode è l'eliminazione di un file nel riquadro del progetto a sinistra. Se l'hai perso e in qualche modo cancellato in Finder sei nei guai. Grosso problema! Ma potresti risolverlo e risparmiare tempo se lo fai bene.

Innanzitutto, è necessario eliminare il riferimento SVN al file o alla cartella prima di poterlo effettivamente eliminare

  1. Se potessi semplicemente ripristinare il file / la cartella dal cestino o annullare l'ultimo passaggio quando lo hai eliminato, quindi ...

  2. Vai al Terminal - sì, il buon vecchio terminal - e vai in quella posizione. Il modo migliore basta digitare cd quindi estrarre la cartella / il file sul Terminale. Otterrai qualcosa di simile

cd / Users / UserName / Documents / Apps_Seveloping / ...

Puoi controllare dove sei

ls

comando che elenca i tuoi file.

  1. Quindi è necessario eliminare il riferimento svn con un comando SVN:

    svn delete --keep-local fileName_toDelete

Questo eliminerà il file dal repository SVN, MA dovrai eliminarlo manualmente nel Finder.


0

Uso rsync:

# copy folder src to srcStripped excluding subfolders named '.svn'. retain dates, verbose output
rsync -av --exclude .svn src srcStripped

0

Gli utenti IDE di NetBeans possono farlo come di seguito:

  1. Apri il progetto SVN nel tuo IDE
  2. Seleziona il progetto

    fare clic con il tasto destro su Subversion Export

  3. Nella finestra di dialogo

    esporta in cartella / var / tmp / nome progetto premere esportazione attesa verrà mostrato completo chiederà vuoi aprirlo apri al volo

  4. Ora puoi passare a Git :)


0

La mia idea è quella di rimuovere la cartella .svn e quindi spostare tutti gli altri file in una nuova cartella. È così semplice.


0

Quando stai usando il sistema operativo Windows, vai alla posizione della cartella e controlla che i file nascosti siano aperti, quindi puoi vedere la cartella SVN lì dentro. Rimuovi quella cartella.


0

svn export funziona bene, ma penso che questo sia:

svn rm --keep-local <folder/file>

Lo rimuove dal tuo repository locale.


0

Come punto vitale, quando si utilizza la shell per eliminare le cartelle .svn, è necessario l' argomento -depth per impedire al comando find di accedere alla directory che è stata appena eliminata e che mostra messaggi di errore come ad es.

"find: ./.svn: nessun file o directory del genere"

Di conseguenza, è possibile utilizzare il findcomando come di seguito:

cd [dir_to_delete_svn_folders]
find . -depth -name .svn -exec rm -fr {} \;


0

Utilizza il seguente:

svn rm --keep-local <folder name> per rimuovere la cartella e tutto ciò che contiene.

svn rm --keep-local <folder name>/* per mantenere la cartella, ma rimuovere tutto all'interno della cartella.

Ecco un esempio di ciò che accade:

~/code/web/sites/testapp $ svn rm --keep-local includes/data/*
D         includes/data/json
D         includes/data/json/index.html
D         includes/data/json/oembed
D         includes/data/json/oembed/1.0
D         includes/data/json/oembed/1.0/embed1.json
D         includes/data/json/oembed/1.0/embed2.json
D         includes/data/json/oembed/1.0/embed3.json

-1

Su Windows 10, dobbiamo andare a Windows Explorer, quindi selezionare Viewe selezionare la casella di controllo View hidden files.

Quindi vai alla cartella con SVN collegato su Esplora risorse ed elimina la .svncartella / il file.


Sebbene abbia modificato la formattazione, questa risposta in realtà non risponde alla domanda. L'utente sa già come eliminare la .svncartella di base , ma chiede tutte le sottocartelle. Si prega di leggere attentamente la domanda.
CodeMouse92,
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.