Как SVN хранит время фиксации? - PullRequest
9 голосов
/ 01 января 2011

Я работаю над проектом, который предусматривает извлечение подробностей с сервера SVN с использованием SVNKit.Мой проект уже завершен и мы работаем уже некоторое время.Во время тестирования я заметил кое-что довольно странное.Времена коммитов, по-видимому, мои извлеченные данные всегда отличаются от того, что есть в журналах SVN.

Я не смог найти в своем проекте никакого кода, который мог бы вызвать эту разницу, но теперь я смотрю, как сервер SVN хранит коммитвремя само по себе.Поскольку у нас есть разработчик, работающий в разных частях света, что приводит к различным часовым поясам, я подумал, что SVN может сохранять время после преобразования их в GMT или часовой пояс системы, в которой работает сервер SVN.Но этого, похоже, не происходит.Вместо этого время хранится в соответствии с тем временем, когда была выполнена фиксация, и в самом локальном часовом поясе.

Я не смог найти в Интернете какого-либо существенного документа, подтверждающего мою теорию.

Кто-нибудь может вкратце объяснить, как SVN хранит время фиксации для каждого изменения?Ссылки на документацию, ссылающиеся на это, будут очень полезны.

Ответы [ 3 ]

7 голосов
/ 01 января 2011

Похоже, что Subversion устанавливает время фиксации, основанное на server времени, используя UTC часовой пояс, это электронное письмо от разработчика Subversion Ben Collins-Sussman подтверждает это.Также с этим согласна документация git-svn и документация модуля Perl SVN::Web.

3 голосов
/ 02 января 2011

Из раздела книги SVN, документирующего неверсионные свойства :

svn:date

Содержит время UTC, в котором была создана редакция, в ISO8601 формат.Значение берется из часов сервера, а не из клиента.

ISO 8601 по-прежнему допускает большое количество различных форматов, и индикаторы часового пояса не являются обязательными.Однако, если вы посмотрите на значение svn:date следующим образом:

svn propget --revprop -r HEAD http://example.com/svn

Тогда результат будет примерно таким:

2010-12-23T00:45:41.552600Z

Это Z наend является индикатором для UTC часового пояса , и Subversion всегда использует этот часовой пояс для записи даты и времени фиксации.

2 голосов
/ 08 ноября 2011

Ваш вызов подкоманды propget, по-видимому, опускает аргумент svn: date.Мне нужно было ввести команду таким образом, чтобы достичь желаемого результата:

svn propget --revprop -r HEAD svn: date

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...