2011-01-17 13 views
8

Sto cercando di controllare un repository subversion completa comprese tutte le succursali e tag:Errore check-out repository Subversion (SVN: La vostra directory .svn/tmp può essere mancante o danneggiato;)

svn co svn+ssh://path/to/project 

Questo viene eseguito per un po ', ma durante il checkout di un ramo ottengo il seguente errore:

svn: Your .svn/tmp directory may be missing or corrupt; run 'svn cleanup' and try again 
svn: Can't open file 'project\branches\BRANCH\source\java\com\bS\.svn\tmp\text-base\Event.java.svn-base': The system cannot find the path specified. 

Così ho provato alla cassa manualmente il ramo facendo:

svn co svn+ssh://path/to/project/branches/BRANCH 

Questo esegue multe e ottengo il ramo. Posso quindi copiare il ramo nella directory dei rami dell'intero progetto e continuare con il checkout. Ma continua a correre questo problema su altri rami.

Qualcuno ha idea del motivo per cui non posso effettuare il checkout del ramo come parte del progetto complessivo, ma posso verificarlo da solo?

+0

Hai provato a eseguire svn cleanup? –

+0

Sì, non è stato d'aiuto. Osservazione – DaveJohnston

+0

che probabilmente non è correlata all'errore: a meno che tu non sappia cosa stai facendo (cioè sai come creare checkout poco profondi), non dovresti controllare il livello più alto di un progetto con tutti i rami e tag inclusi. Se il progetto ha un migliaio di tag, il checkout conterrà un migliaio di copie del progetto. Controlla invece il bagagliaio o una filiale specifica. –

risposta

6

Ok, quindi ho effettivamente trovato la risposta alla mia domanda, beh, almeno la soluzione. Si scopre che ha a che fare con la lunghezza del percorso. Nella mia domanda di cui sopra ho modificato il nome del percorso per non pubblicare i dettagli del codice dell'azienda, ma in realtà si trattava di un file con un nome molto lungo e viveva in una directory molto profondamente annidata.

Mentre stavo controllando il ramo da solo, lo stavo verificando in una directory di livello superiore nel mio disco rigido e funzionava. Ho provato a controllare il ramo da solo direttamente nella directory dei rami che avevo creato per il progetto e non ha funzionato, quindi suppongo che abbia avuto qualcosa a che fare con il percorso.

Ora sto verificando l'intero progetto in D: \ ProjectDir e tutto sembra andare molto più agevolmente. Immagino che ci sia un limite in sovversione alla lunghezza di un percorso e quindi non è riuscito a ottenere alcuni dei file richiesti.

* Aggiornamento: il limite è di 255 caratteri. Si è scoperto che nel mio caso il percorso era di 269 caratteri. Quindi, bastava salire di 1 livello di directory per risolvere il problema.

+2

Sei su Windows. Destra? La lunghezza massima del percorso è un grosso problema di Windows. Ho visto spamware nascosto usando questo. Windows Explorer e anti-malware non potevano vedere i file, ma erano lì. L'ironia è che Windows può gestire questi percorsi lunghi e NTFS può gestire questi percorsi. Tuttavia, Windows Explorer e le librerie di apertura/chiusura file di base non possono. Puoi fare tecniche di programmazione usando // percorsi che ti permetteranno di aggirare questi problemi, ma nessuno li usa. Perché la SM ha ancora questo limite faux in Windows è la supposizione di chiunque. Soprattutto perché .NET utilizza nomi di percorso lunghi. –

+0

Non è molto utile per questa soluzione, poiché a volte non si ha il lusso di "salire di un livello". Vorrei raccomandare la soluzione di Victor (pubblicata più tardi) invece: utilizzando il percorso assoluto nel tuo checkout, non il percorso relativo –

7

È possibile aggirare questo problema su Windows specificando il percorso completo del parametro nel comando svn. Per esempio, piuttosto che

c:\dev> svn co http://repoman.example/svn/myproj/trunk myproj 

provare questo

c:\dev> svn co http://repoman.example/svn/myproj/trunk c:\dev\myproj 

Per qualche ragione path length limits only apply to relative paths.

+1

Questo ha funzionato per me. Per fortuna, dato che ero già alla radice del disco, non c'era modo di abbreviare il percorso di pagamento. –

+0

LAVORA PER ME ANCHE !!! Scusa, ho solo esagerato –

2

Controllare questo: find . -iname '.svn' -exec mkdir {}/tmp \;

Problemi correlati