たとえば、SVN 1.5 クライアントには作業コピー用の 1 つのレイアウトがあり、SVN 1.6 クライアントには別のレイアウトがあります。新しいクライアントが触れると、レイアウトが自動的にアップグレードされることを理解しています。
システムに作業コピーがある場合、使用しているレイアウトのバージョンを確認するにはどうすればよいですか?
たとえば、SVN 1.5 クライアントには作業コピー用の 1 つのレイアウトがあり、SVN 1.6 クライアントには別のレイアウトがあります。新しいクライアントが触れると、レイアウトが自動的にアップグレードされることを理解しています。
システムに作業コピーがある場合、使用しているレイアウトのバージョンを確認するにはどうすればよいですか?
存在する場合.svn/format
は、その中の番号を読み取ります。
.svn/format
存在しない場合、バージョン番号は の最初の行にあります.svn/entries
。
Subversion 1.6 は、使用されなかった最初のもの.svn/format
です。バージョン 7 以前は XML ベースの.svn/entries
ファイルを使用していましたが、新しいバージョンではあまり冗長でない行ベースのファイル形式を使用しています。
Subversion 1.7 以降、バージョン番号は.svn/wc.db
SQLite データベースの「user_version」フィールドに保存されます。したがって、バージョン 12 にバンプされたとしても.svn/format
、実際のフォーマット バージョンは 29 であり、今後のバージョンは更新され.svn/format
ない可能性があります。バージョン番号を取得する.svn/wc.db
には、次の 2 つの方法があります。
sqlite3
、sqlite3 .svn/wc.db "PRAGMA user_version"
sqlite3
パスにない場合.svn/wc.db
は、16 進エディターで開き、オフセット 0x3c の DWORD を読み取ります。すべての形式のバージョン番号は、それぞれの Subversion リリースのバージョン番号とともにwc.hに記述されています。
スタック オーバーフローの質問から、SVN 作業コピーのバージョン (1.7 または 1.8) を見つけてください。
sqlite3 .svn/wc.db "PRAGMA user_version"
SVN 1.7 以降 (または、 SQLite 3.0od -An -j63 -N1 -t dC .svn/wc.db
ライブラリしかない場合はYMMV) で使用できます。