Как определить версию макета рабочей копии 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 Есть два метода:

  1. если у вас есть sqlite3 на вашем пути, sqlite3 .svn/wc.db "PRAGMA user_version"
  2. если у вас нет 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).

Другие вопросы по тегам