Как мне определить версию макета рабочей копии SVN?

StackOverflow https://stackoverflow.com/questions/1364618

  •  21-09-2019
  •  | 
  •  

Вопрос

Например, клиент SVN 1.5 имеет один макет для рабочих копий, а клиент SVN 1.6 имеет другой макет.Я понимаю, что макет автоматически обновляется, когда к нему прикасается более новый клиент.

Если у меня есть рабочая копия в моей системе, как я могу узнать версию используемого ею макета?

Это было полезно?

Решение

Если .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

Все номера версий формата описаны в туалет.ч вместе с номерами версий соответствующих выпусков 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).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top