SVN如何存储提交时间?

时间:2011-01-01 07:46:13

标签: svn timezone repository commit logging

我正在开发一个涉及使用SVNKit从SVN服务器中提取详细信息的项目。我的项目已经完成,我们已经工作了一段时间了。在测试期间,我发现了一些非常奇怪的东西。提交时间我的提取数据似乎与SVN日志中的内容完全不同。

我无法在我的项目中找到可能导致这种差异的任何代码,但现在我正在考虑SVN服务器如何存储提交时间本身。由于开发人员在世界不同地区工作,从而导致不同的时区,我认为SVN可能在将其转换为运行SVN服务器的系统的GMT或时区之后存储时间。但这似乎并没有发生。相反,时间按照提交完成时和本地时区本身存储。

到目前为止,我无法在互联网上找到任何支持我的理论的实质性文件。

有人可以简要解释一下SVN如何为每次更改存储提交时间吗?文档链接指向这将有很大的帮助。

3 个答案:

答案 0 :(得分:7)

看起来Subversion使用server时区根据UTC时间设置提交时间,来自Subversion开发人员Ben Collins-Sussman的{​​{3}}电子邮件确认了这一点。此外,this联机帮助页和Perl git-svn模块文档也同意这一点。

答案 1 :(得分:3)

来自section of the SVN book documenting the unversioned properties

  

svn:date

     

包含以ISO 8601格式创建修订版的UTC时间。该值来自服务器计算机的时钟,而不是客户端的。

ISO 8601仍然允许大量不同的格式,时区指标不是强制性的。但是,如果您查看svn:date的值,请执行以下操作:

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

然后结果将是这样的:

2010-12-23T00:45:41.552600Z

最后Z UTC时区的指示符,Subversion始终使用该时区记录提交日期时间。

答案 2 :(得分:2)

您对prophet子命令的调用似乎省略了svn:date参数。我必须以这种方式输入命令才能达到预期的效果:

svn propset --revprop -r HEAD svn:date