【问题标题】:How does SVN store commit time?SVN 如何存储提交时间?
【发布时间】:2011-06-02 04:33:22
【问题描述】:

我正在从事一个项目,该项目涉及使用 SVNKit 从 SVN 服务器中提取详细信息。我的项目已经完成,并且已经为我们工作了一段时间。在测试过程中,我注意到一些非常奇怪的事情。我的提取数据的提交时间似乎总是与 SVN 日志中的不同。

我在我的项目中找不到任何可能导致这种差异的代码,但现在我正在研究 SVN 服务器如何存储提交时间本身。由于我们有来自世界不同地区的开发人员在不同的时区工作,因此我认为 SVN 可能会在将它们转换为 GMT 或运行 SVN 服务器的系统的时区后存储时间。但这似乎并没有发生。而是根据提交完成的时间和本地时区本身存储时间。

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

谁能简要解释一下 SVN 如何存储每次更改的提交时间?引用此内容的文档链接将有很大帮助。

【问题讨论】:

    标签: svn timezone repository commit logging


    【解决方案1】:

    看起来 Subversion 使用 UTC 时区根据 server 时间设置提交时间,来自 Subversion 开发人员 Ben Collins-Sussmanthis 电子邮件确认了这一点。此外,git-svn 手册页和 Perl SVN::Web 模块文档也同意这一点。

    【讨论】:

      【解决方案2】:

      来自section of the SVN book documenting the unversioned properties

      svn:date

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

      ISO 8601 仍然允许大量不同的格式,并且时区指示符不是强制性的。但是,如果您像这样查看svn:date 的值:

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

      那么结果会是这样的:

      2010-12-23T00:45:41.552600Z
      

      最后的ZUTC时区的指示符,Subversion总是使用那个时区来记录提交日期时间。

      【讨论】:

        【解决方案3】:

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

        svn propget --revprop -r HEAD svn:date

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-06-15
          • 1970-01-01
          • 2011-04-23
          • 2011-01-07
          • 1970-01-01
          • 2012-04-28
          • 2023-03-09
          • 2015-05-16
          相关资源
          最近更新 更多