Como faço para determinar a versão de layout de cópia de trabalho do SVN?
-
21-09-2019 - |
Pergunta
Por exemplo, o cliente SVN 1.5 possui um layout para cópias de trabalho e o cliente SVN 1.6 possui um layout diferente. Entendo que o layout é automaticamente atualizado quando é tocado por um cliente mais novo.
Se eu tenho uma cópia de trabalho no meu sistema, como posso descobrir a versão do layout que está usando?
Solução
Se .svn/format
Existe, então leia o número nele:
- A versão 7 é SVN 1.3
- A versão 8 é SVN 1.4
- A versão 9 é SVN 1.5
Se .svn/format
não existe então o número da versão está na primeira linha em .svn/entries
:
- A versão 10 é SVN 1.6
- A versão 12 é SVN 1.7
Subversão 1.6 foi o primeiro a não usar .svn/format
. Versão 7 ou mais usou baseado em XML .svn/entries
Arquivo, versões mais recentes usam menos formato de arquivo baseado em linha detalhado.
Como subversão 1.7, o número da versão é armazenado no .svn/wc.db
Banco de dados SQLite no campo "user_version". Então, embora .svn/format
é esbarrado na versão 12 A versão real do formato é 29 e as versões futuras podem não atualizar .svn/format
não mais. Para obter o número da versão de .svn/wc.db
Existem dois métodos:
- se você tem
sqlite3
no seu caminho,sqlite3 .svn/wc.db "PRAGMA user_version"
- Se você não tem
sqlite3
No seu caminho, aberto.svn/wc.db
em um editor hexadecimal e leia o DWORD no deslocamento 0x3c
Todos os números de versão do formato são descritos em WC.H junto com os números de versão dos respectivos lançamentos de subversão.
Outras dicas
Da questão de transbordamento de pilha Descubra a versão de cópia de trabalho do SVN (1.7 ou 1.8):
Pode -se usar sqlite3 .svn/wc.db "PRAGMA user_version"
no SVN 1.7 ou mais tarde (ou od -An -j63 -N1 -t dC .svn/wc.db
Se você só tem o SQLITE 3.0 bibliotecas, ymmv).