Come correggere "manca l'area di amministrazione della copia di lavoro mancante" in SVN?


184

Ho eliminato manualmente una directory che ho appena aggiunto, offline, nel mio repository. Non riesco a ripristinare la directory.

Qualsiasi tentativo di eseguire un aggiornamento o un commit fallirà con:

"blabla/.svn" containing working copy admin area is missing.

Capisco il perché, ma esiste comunque una soluzione.

Non voglio controllare l'intero repository e aggiungere manualmente le mie modifiche, ci vorrebbero ore.

Risposte:


148

Secondo questo: http://www.devcha.com/2008/03/svn-directory-svn-contain-working.html

Esegui il checkout della cartella "blabla" in un'altra posizione, quindi copia nuovamente la sua cartella .svn nella "blabla" originale.


62
Ho così tanto SVN. Spargere .svnsottodirectory dappertutto deve essere stata la peggior idea nella storia del controllo delle versioni.
Johannes Fahrenkrug,

9
Gente, date un'occhiata ai suggerimenti di Rob di seguito, è molto semplice la soluzione attuale.
Mohammad Arif,

Mohammed, grazie per il testa a testa. Questo ha funzionato per me. Stavo cercando di far sì che SVN ignorasse una directory di registro e l'eliminazione di .svn mi ha portato a questo problema. La soluzione di Rob l'ha risolto.
Asmor,

Johannes, non sono neanche un sostenitore di SVN, ma il vantaggio delle directory .svn è che puoi controllare le sottodirectory di un repository e mantenere il controllo della versione.
Joseph Persie,

@MohammadArif, Ci sono due "Robs" ora
Charles Clayton,

123

prima, ho avuto una situazione simile e ho usato svn --force delete __dir__ . Ciò ha risolto il problema per me. Quindi ho continuato a lavorare con la mia copia di lavoro normalmente.


2
Questo ha funzionato anche per me. Gli aggiornamenti e le pulizie non sono riusciti perché la directory non era mai nel repository, ma la copia funzionante era sicura che fosse sotto controllo di revisione. Mi chiedo se ho aggiunto la directory, ma poi l'ho cancellata prima di impegnarla?
Magnus,

1
Questo va molto bene. Avevo aggiunto una directory, cancellato il .svn ma non ho mai eseguito il commit. Questo ha fatto il trucco
Eric

8
Grazie; questa risposta mi ha fatto risparmiare un sacco di tempo. svn cleanuppoi ha svn --force delete <directory-that-doesn't-exist-but-should>lavorato per me.
mpontillo,

Ho lavorato al secondo tentativo, prima ho provato senza --force, che in qualche modo ha lasciato un file di blocco in .svn del genitore che ho dovuto rimuovere manualmente. La seconda volta con --force è stato risolto il problema.
Jörn Horstmann,

3
Hm, quel comando mi dà semplicemente lo stesso errore "copia funzionante".
Oscar

72

Quello che ho fatto per risolvere questo problema è stato quello di eliminare la copia locale della cartella in questione e quindi fare uno svn updatedei genitori direttamente dopo.

Risolto il problema.


3
Non posso credere ... Ho provato di tutto ... ed è stato così facile !!! Ha funzionato perfettamente, molte grazie !!!!!
lucaferrario,

Questa è la risposta più diretta.
joaerl,

35

Puoi provare a estrarre una nuova copia della directory principale?

Modifica: per essere un po 'più specifico, intendevo suggerire di salire di un livello ed eliminare la directory di contenimento. Quindi fare un

svn update --set-depth infinity

per sostituire la directory.


Ci ho provato, ma per qualche strana ragione, finisco con una directory vuota. Non capisco ...
e-satis

Dovrebbe funzionare anche un <code> svn update blabla </code> esplicito dal genitore.
jmanning2k,

@ jmanning2k, è quello che ho pensato anch'io, ma l'OP ha detto che l'aveva provato e che non aveva funzionato.
Rob Wells,

Per chiarire, ho suggerito --set-depth infinityper questo: stackoverflow.com/questions/866835/…
Wim Coenen,

1
Ciò richiede molti più voti ... soluzione rapida e relativamente (per gli standard svn) pulita.
Dino,

6

Ho aggiunto una directory a svn, quindi ho accidentalmente eliminato la cartella .svn all'interno.

ero solito

svn delete --keep-local folderName

per risolvere il mio problema.


Questo ha funzionato per me quando il mio IDE ha aggiunto una directory, e quindi avevo spostato una directory con lo stesso nome in posizione prima che fosse impegnata.
sopprimere il

ci ho provato, ma ancora non ci sono riuscito. Ho usato svn checkout --force [url]che ha ricreato la cartella .svn
Lex

4

Ho appena fatto 'svn ripristina / blabla' e ha funzionato, la cartella è tornata e posso svn eliminarla


Grazie. Ho avuto questo problema e ho provato il tuo suggerimento e ha funzionato.
Boric

3

L'errore "Manca la directory 'blah / .svn' contenente l'area di amministrazione della copia funzionante" si è verificato quando ho tentato di aggiungere la directory al repository, ma non disponevo di privilegi di filesystem sufficienti per farlo. La directory non era già nel repository, ma sosteneva di essere sotto il controllo della versione dopo l'aggiunta non riuscita.

Il check-out di una copia della directory principale in un'altra posizione e la sostituzione della cartella .svn nella directory principale della copia di lavoro mi ha permesso di aggiungere e impegnare correttamente la nuova directory (dopo aver corretto i permessi del file, ovviamente).


2

Usiamo maven e svn. È stato un check-in errato della directory di destinazione in SVN a causare questo errore. Rimozione che risolto tutto, se questo suggerimento aiuta chiunque.


Rimuovere cosa / da dove esattamente?
DerMike,

maven crea la directory "target", durante la creazione. Di solito nessuno dovrebbe controllare in questo. Un check-in accidentale ha fatto un problema di autorizzazione la prossima volta che ha creato questo errore. La rimozione della directory "target" da SVN ha risolto il problema.
Madu,

2

Ho provato svn rm --force /path/to/dirinutilmente, ma ho finito per correre svn upe lo ha risolto per me.


1

Ho avuto questo errore di recente, quando i file sono stati esclusi dalle impostazioni nei miei globi SVN. L'errore è stato particolarmente brutto poiché ho anche eliminato i file direttamente dal repository - e questo significava che le soluzioni di cui sopra stavano rifiutando non avrebbe funzionato. In questo caso, l'eliminazione manuale della directory .svn dalla directory che ho rimosso da SVN mi ha permesso di eseguire un aggiornamento che mi ha permesso di impegnarmi.


1

Ho avuto lo stesso problema, quando stavo provando a cambiare "C: \ supercartella"

Messaggio di errore:

Directory 'C:\superfolder\subfolder\.svn'
containing
working copy admin area is missing
Please execute the 'Cleanup' command.

Dopo aver provato a fare una "pulizia", ​​ho ricevuto il seguente errore:

 Cleanup failed to process the following paths:
 C:\superfolder\
'C:\superfolder\subfolder\' is not a working copy directory

Soluzione:

  1. Elimina la cartella "sottocartella"
  2. Pulisci la cartella "supercartella"
  3. Prova a cambiare nuovamente la cartella "supercartella"

questo ha funzionato per me. Per favore fatemi sapere se funziona anche per voi.


1

Ho avuto questo errore di recente. È stato causato dal fatto che root possiede un paio di file nella directory che danno questo errore.

Dopo aver modificato le autorizzazioni tutto ha funzionato come previsto.


1

Non ho capito molto dai tuoi post. La mia soluzione è

  1. Taglia la cartella problematica e copia in una posizione.
  2. Ottieni la soluzione da Subversion in un'altra directory di lavoro (solo una nuova).
  3. Aggiungi la tua cartella salvata alla nuova copia di lavoro e aggiungila come progetto esistente (se è progetto come nel mio caso).
  4. Commettere;

1

Ho avuto questo problema. Basta spostare temporaneamente blabla in un'altra posizione, dire a svn di ripristinarlo, quindi spostarlo indietro. Viene trattato come una nuova aggiunta. Semplice!


1

Il più semplice che mi ha aiutato:

rm -rf _dir_in_question_
svn up

Se hai cambiamenti nella directory problematica, questa non è una buona soluzione per te.


1

Mi sono imbattuto in questo problema durante la sostituzione di una libreria API di terze parti con una versione più recente e nessuna delle soluzioni qui funzionava davvero per me perché volevo sostituire la versione SVN con la versione locale. La mia soluzione era la seguente:

1) Sposta la cartella offensiva nella mia home directory, eliminala da SVN e commetti:

mv foldercausingproblem ~/
svn --force delete foldercausingproblem
svn commit --message "Temporary removing folder with old API"

2) Riporta la cartella, aggiungila a SVN e esegui nuovamente il commit:

mv ~/foldercausingproblem ./
svn --force add .
svn commit --message "Finally all working!"

Leggermente irritante dover impegnarsi due volte, ma sembra aver funzionato bene.


In genere mi piace lavorare sul codice separatamente dalla mia copia di lavoro del repository (IDE, compilatori, parser di errori, ecc. Non mi piace .svn, e non c'è nessun comando 'EVERYONE IGNORE .SVNs EXCEPT SVN!' In Eclipse afaik); questo significa che il processo di commit SVN di base per me è: 1. checkout copia di lavoro di repo 2. cancella la directory principale del progetto Ho un aggiornamento per 3. copia e incolla la directory di progetto aggiornata nella directory principale del progetto nella copia di lavoro 4. svn aggiungi --force <nomeprogramma> 5. commit. Di solito funziona, ma a volte può generare l'errore dell'OP. La correzione di Jamie Brown ha funzionato nel mio caso
CCJ,

0

Nel caso qualcuno volesse l'ennesima soluzione:

  1. Controlla nella tua nuova cartella come "foldername2"
  2. Vai al browser repository Tortise SVN
  3. Rinomina "foldername2" in "foldername"
  4. In Windows Explorer esegui un aggiornamento

Spero che aiuti qualcuno.

-EV


una soluzione solo per Windows.
Raptor

0

Per me, lo stesso problema si è verificato quando entrambi:

  • cancellato ( --force) un file .map
  • aggiunto * .map a svn:ignoreviasvn propedit svn:ignore .

La mia soluzione era:

  1. annulla le modifiche alla proprietà
  2. commettere modifiche ai file
  3. controlla una nuova copia del repository (ahimè!)
  4. cambia la proprietà e commetti

0

Ho avuto questo problema quando stavo cercando di aggiungere una directory a svn. Ho risolto andando nel browser repo. Fare clic con il tasto destro nella finestra di sinistra, scegliere aggiungi cartella e aggiungere la directory direttamente nel browser repo.

Ho quindi cancellato la directory localmente (dopo il backup ovviamente) fatto un clean-up e un aggiornamento svn e tutto funzionava di nuovo.


Potrei aggiungere che questo è stato aggiunto al mio file "svn sucks".
Speck,

0

Prima di tutto controlla il progetto nel tuo sistema in una cartella. Quindi rimuovere la cartella .svn dal progetto in conflitto e copiare la cartella .svn dalla nuova cartella di checkout e incollarla nella cartella di lavoro. Quindi il problema è risolto.


0

Un'attività comune che ho riscontrato è stata quella di prendere una directory di repository in fase di gestione temporanea e copiarla in un altro repository - entrambi in SVN ed entrambi chiamati con lo stesso nome. Il modo in cui ha funzionato per me è stato il seguente:

svn --force delete PROBLEMATIC-DIR
svn export "https://OLD REPO-A/ new-repo-A"
svn add new-repo-A
svn commit new-repo-A
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.