Come è possibile determinare la versione di layout copia di lavoro SVN?
-
21-09-2019 - |
Domanda
Per esempio, il client SVN 1.5 ha un layout per copie di lavoro, e il 1.6 client SVN ha un layout diverso. Capisco che il layout viene automaticamente aggiornato quando viene toccata da un client più recente.
Se ho una copia di lavoro sul mio sistema, come posso scoprire la versione del layout che sta utilizzando?
Soluzione
Se esiste .svn/format
, quindi leggere il numero in esso:
- La versione 7 è SVN 1.3
- Versione 8 è SVN 1.4
- Versione 9 è SVN 1.5
Se .svn/format
non esiste, allora il numero di versione è sulla prima riga in .svn/entries
:
- La versione 10 è SVN 1.6
- Versione 12 è SVN 1,7
Subversion 1.6 è stato il primo a non utilizzare .svn/format
. Versione 7 anni e più file di .svn/entries
basato su XML utilizzato, le versioni più recenti utilizzano il formato di file linea a base di meno prolisso.
Dato che Subversion 1.7 il numero di versione è memorizzato nel database SQLite .svn/wc.db
nel campo "user_version". Così, anche se .svn/format
viene urtato alla versione 12 alla versione attuale formato è 29 e le versioni future non può aggiornare più .svn/format
. Per ottenere il numero di versione da .svn/wc.db
ci sono due metodi:
- se hai
sqlite3
nel percorso,sqlite3 .svn/wc.db "PRAGMA user_version"
- Se non si dispone di
sqlite3
nel percorso,.svn/wc.db
aperto in un editor esadecimale e leggere la DWORD all'offset 0x3C
Tutti i numeri di versione formato sono descritti in wc .h insieme con i numeri di versione dei rispettivi rilasci Subversion.
Altri suggerimenti
Da Stack Overflow domanda Scopri SVN versione copia di lavoro (1.7 o 1.8) :
Si può usare sqlite3 .svn/wc.db "PRAGMA user_version"
su SVN 1.7 o successiva (o od -An -j63 -N1 -t dC .svn/wc.db
se hai solo il SQLite 3.0 biblioteche , YMMV).