2012-01-30 18 views
20

Recentemente ho aggiornato il mio client SVN dalla versione 1.6.9 alla 1.7.2 e dopo la conversione nel nuovo formato, ho notato che non esiste più una sottocartella .svn per ogni sottocartella. Per la mia particolare configurazione questo non è molto conveniente.SVN non scrive più. Svn in tutte le sottocartelle?

C'è un modo per annullare questo o ripristinare il vecchio comportamento in cui ogni sottocartella di un CO avrebbe un .svn?

+0

Mi rendo conto che la mia domanda è oscura ma ho provato a cercare google/bing per questo prima di chiedere ma non ha trovato nulla di rilevante. qualsiasi aiuto o suggerimento sarebbe apprezzato. – MikeJ

+16

Quale parte di SVN stai abusando di rendere le cartelle .svn ovunque convenienti? – Collin

+1

Puoi sempre eseguire il downgrade del tuo client svn (penso che dovrai rimuoverlo e installare la versione precedente quindi recuperare nuovamente il repository (perché presumibilmente non è compatibile con le versioni precedenti) – tjarratt

risposta

38

Subversion 1.7 presenta una riscrittura completa del sistema di gestione dei metadati della copia di lavoro di Subversion, codice WC-NG. Il vecchio sistema era una delle prime parti di Subversion scritto e col passare del tempo era diventato difficile da mantenere ed estendere. WC-NG ha lo scopo di fornire un miglioramento immediato delle prestazioni, consentendo anche molti miglioramenti futuri delle funzionalità.

Una caratteristica fondamentale delle modifiche introdotte in Subversion 1.7 è la centralizzazione dell'archiviazione dei metadati della copia di lavoro in un'unica posizione. Invece di una directory .svn in ogni directory nella copia di lavoro, le copie di lavoro di Subversion 1.7 hanno solo una directory .svn - nella radice della copia di lavoro. Questa directory include (tra le altre cose) un database con supporto SQLite che contiene tutti i metadati necessari per Subversion per quella copia funzionante.

Anche se i dati sono memorizzati in un formato strutturato, le relazioni tra i dati sono complesse. Scoraggiamo notevolmente gli strumenti esterni dalla modifica dei dati contenuti in questo database, poiché è probabile che tale modifica determini un danneggiamento della copia di lavoro.

Read more here.

+5

-1: questa risposta è un po 'fuori tema, poiché la parte centrale della domanda ("c'è un modo per ripristinare il vecchio comportamento in cui ogni sottocartella avrebbe un .svn?") Viene ignorata. – Wizard79

+10

@Lorenzo Penso che le persone dovrebbero essere in grado di leggere "no" dal testo fornito. – JPuge

2

Il modo più diretto per ottenere la sovversione a scrivere le directory .svn in ogni directory è di declassare la tua sovversione a una versione prima che la serie 1.7. Subversion 1.6.23 era l'ultima versione per avere il comportamento desiderato.

Un altro modo per ottenere ciò che funzionerà con Subversion 1.7 e versioni successive è quello di verificare singolarmente ciascuna sottodirectory del progetto. Ad esempio, se si ha un progetto con una struttura di directory simile:

project 
`- bin 
`- etc 

Si potrebbe controllarlo fuori facendo qualcosa di simile:

mkdir project 
cd project 
svn co svn+ssh://[email protected]/src/project/bin 
svn co svn+ssh://[email protected]/src/project/etc 

Questa è tollerabile solo se si dispone di alcune directory e la loro organizzazione è superficiale

In caso contrario, il downgrade a una sovversione precedente è la soluzione migliore.