Как определить версию макета рабочей копии SVN?
Например, клиент SVN 1.5 имеет один макет для рабочих копий, а клиент SVN 1.6 имеет другой макет. Я понимаю, что макет автоматически обновляется, когда к нему обращается новый клиент.
Если у меня есть рабочая копия в моей системе, как я могу узнать версию используемого макета?
2 ответа
Если .svn/format
существует, затем прочитайте число в нем:
- Версия 7 SVN 1.3
- Версия 8 SVN 1.4
- Версия 9 SVN 1.5
Если .svn/format
не существует, то номер версии находится на первой строке .svn/entries
:
- Версия 10 SVN 1.6
- Версия 12 - SVN 1.7
Subversion 1.6 был первым, кто не использовал .svn/format
, Версия 7 и старше использовали XML-на основе .svn/entries
файл, более новые версии используют менее подробный формат файла на основе строки.
Начиная с Subversion 1.7 номер версии сохраняется в .svn/wc.db
База данных SQLite в поле "user_version". Так что даже если .svn/format
повышена до версии 12, фактическая версия формата - 29, и будущие версии могут не обновляться .svn/format
больше. Получить номер версии от .svn/wc.db
Есть два метода:
- если у вас есть
sqlite3
на вашем пути,sqlite3 .svn/wc.db "PRAGMA user_version"
- если у вас нет
sqlite3
на вашем пути, откройте.svn/wc.db
в шестнадцатеричном редакторе и прочитайте DWORD со смещением 0x3c
Все номера версий формата описаны в wc.h вместе с номерами версий соответствующих выпусков Subversion.
Из вопроса переполнения стека. Выясните версию рабочей копии SVN (1.7 или 1.8):
Можно использовать sqlite3 .svn/wc.db "PRAGMA user_version"
на SVN 1.7 или позже (или od -An -j63 -N1 -t dC .svn/wc.db
если у вас есть только библиотеки SQLite 3.0, YMMV).