Как мне определить версию макета рабочей копии SVN?
-
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
есть два метода:
- если у вас есть
sqlite3
на твоем пути,sqlite3 .svn/wc.db "PRAGMA user_version"
- если у вас НЕТ
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).