たとえば、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.dbSQLite データベースの「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) で使用できます。