SVN: Cartella già sotto il controllo della versione ma non in arrivo?


111
mark@mark-ubuntu:~/myproject$ svn stat
?       runserver.sh
?       media/images/icons
?       apps/autocomplete
mark@mark-ubuntu:~/myproject$ svn add apps/autocomplete
svn: warning: 'apps/autocomplete' is already under version control

svn statdice che non è sotto il controllo della versione, quindi provo ad aggiungerlo e poi mi dice che lo è. Quando svn cieseguo un , non viene memorizzato e non viene visualizzato quando provo a navigare nel repository online.

Come posso convincerlo a impegnarmi?


3
La cartella "completamento automatico" contiene una sottodirectory ".svn" danneggiata? Inoltre, hai pulito? :)
bzlm

1
Hai provato a: svn cleanup, solo una pugnalata nel buio?
Shaunhusain

Mi sono imbattuto in questo problema quando ho copiato una directory archiviata in un'altra cartella nel mio progetto. L'eliminazione del vecchio .svn funziona!
paulrehkugler

Io con forza aggiunto i file: svn add --force /path/to/fileo se si desidera aggiungere directory ricorsivamente: svn add --depth infinity --force /path/to/directory.
joker

Risposte:


162

Copia la cartella problematica in una directory di backup e rimuovila dalla directory di lavoro SVN. Ricorda di eliminare tutte .svnle directory nascoste dalla cartella copiata.

Ora aggiorna il tuo progetto, ripulisci e salva ciò che è rimasto. Ora sposta di nuovo la cartella nella directory di lavoro, aggiungila e salva. Il più delle volte questa soluzione alternativa funziona, sembra che fondamentalmente SVN sia stato confuso ...

Aggiornamento: citazione del commento di @Mark :

Non è stato necessario spostare la cartella, è sufficiente eliminare la .svncartella e quindi svn-aggiungendola ha funzionato.


52
Non è stato necessario spostare la cartella, è sufficiente eliminare la .svncartella e quindi svn-aggiungendola ha funzionato.
mpen

6
+1 per rendere la mia giornata ;-) Come ha detto Mark, per me è stato sufficiente rimuovere le directory .svn all'interno della cartella problematica.
rturrado

23
Grazie per aver identificato SVN come totale BS.
Steve K

1
ora che hai solo .svn nella cartella superiore, non puoi fare questo BS, se i metadati sono corrotti, sei brindisi
Kalpesh Soni

deseleziona la cartella principale (app / completamento automatico) dall'elenco se già impegnata
khaled_webdev

20

Ho avuto un problema simile dopo aver aggiunto un albero di directory che conteneva directory .svn (perché era un svn: esterno nel suo ambiente di origine): lo stato di svn mi ha detto "?", Ma quando ho provato ad aggiungerlo, era già " sotto controllo della versione ".

Poiché non erano presenti altre directory con versione, l'ho fatto

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

rimuovere le directory .svn sbagliate; dopo aver fatto ciò, sono stato in grado di aggiungere la nuova directory.

Nota :

  • Se sono contenute altre directory con versione, l'espressione find deve essere modificata per essere più specifica
  • Se non sei sicuro, prima ometti la parte "-exec ..." per vedere cosa verrebbe cancellato

Anche se questa risposta ha funzionato per me, la prima volta che l'ho usata, ero nella cartella sbagliata e ho messo le cose in un bel pasticcio. Sembra un buon posto per ricordare alle persone di "misurare due volte, tagliare una volta", vale a dire ricontrollare i dettagli prima di eseguire questo.
BishopZ

Raccomando di essere "if unsure" in ... -exec echo {} \;modo da far funzionare bene anche lo switch -exec.
FlipMcF

consigliamo anche di aggiungere un -type da alla ricerca. Chiamami schizzinoso finché non rm -rfvai un po 'troppo lontano. A parte i miei pignoli, penso che questa sia la risposta corretta.
FlipMcF

15

Una variazione sulla risposta di @ gauss256 , l'eliminazione .svn, ha funzionato per me:

rm -rf troublesome_folder/.svn
svn add troublesome_folder
svn commit

Prima della soluzione di Gauss ho provato l'approccio di @ jwir3 e non ho avuto gioia:

svn cleanup
svn cleanup *
svn cleanup troublesome_folder
svn add --force troublesome_folder
svn commit

14

(1) Questo è appena successo a me, e ho pensato che fosse interessante come è successo. Fondamentalmente avevo copiato la cartella in una nuova posizione e l'ho modificata, dimenticando che avrebbe portato con sé tutte le directory nascoste .svn. Una volta che ti rendi conto di come accade, è più facile evitarlo in futuro.

(2) Rimuovere le directory .svn è la soluzione, ma devi farlo in modo ricorsivo per tutto l'albero delle directory. Il modo più semplice per farlo è:

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

3

Hai provato a eseguire una pulizia svn?


2
Mi sono imbattuto anche in questo problema. Poi svn cleanupho provato e non ha aiutato.
imacake

3

Cerca una directory "apps / autocomplete / .svn". Spostalo in un luogo sicuro (nel caso in cui sia necessario ripristinarlo perché non ha funzionato) e vedere se questo risolve il problema.


0

Ho trovato una soluzione nel caso in cui tu abbia installato Eclipse (Luna) con SVN Client JavaHL (JNI) 1.8.13 e Tortoise :

Apri Eclipse: prima prova ad aggiungere il modulo progetto / maven al controllo della versione (Progetto -> Menu contestuale -> Team -> Aggiungi al controllo della versione)

Vedrai il seguente messaggio di errore di Eclipse:

org.apache.subversion.javahl.ClientException: la voce esiste già svn: "PathToYouProject" è già sotto il controllo della versione

Dopodiché devi aprire la directory del tuo spazio di lavoro nel tuo explorer, selezionare il tuo progetto e risolverlo tramite Tortoise (Progetto -> Menu contestuale -> TortoiseSVN -> Risolvi)

Verrà visualizzato il seguente messaggio di dialogo: "L' elenco dei file è vuoto "

Premi Annulla e aggiorna il progetto in Eclipse. Il tuo progetto dovrebbe essere di nuovo sotto il controllo della versione.

Sfortunatamente non è possibile risolvere più di un progetto contemporaneamente ... non devi cancellare nulla ma a seconda delle dimensioni del tuo progetto potrebbe essere un po 'laborioso.


0

Per me fare un aggiornamento svn, seguito da svn commit ha funzionato. Non c'erano cartelle .svn presenti nella cartella che non era possibile aggiungere.

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.