获取上次提交的 UTC 日期



我正在尝试将一个 bash/sh 脚本放在一起,该脚本从 svn 存储库获取上次提交的 UTC 时间(其他 VCS 很容易)我知道我可以做svn propget --revprop -rHEAD svn:date并且很容易获得它,但不能保证 svn 结帐会在线,所以如果可能的话,我更喜欢离线版本。

也许与从svn info获取UTC时间有关?(通过拧紧时区)

摘要:如何在无法访问服务器的情况下获取 svn 提交的 UTC 时间?

谢谢

您可以使用

svn log -r COMMITTED并从中提取日期信息。这对脱机副本有效。

svn log -r COMMITTED | sed -nE 's/^r.*| ([0-9]{4}-[0-9]{2}-[0-9]{2} S+ S+).*/1/p' | xargs -i --  date -ud '{}' '+%s'

-u选项使date改为显示 UTC 时间。

实际上我们不需要使用xargs

date -ud "$(exec svn log -r COMMITTED | sed -nE 's/^r.*| ([0-9]{4}-[0-9]{2}-[0-9]{2} S+ S+).*/1/p')" '+%s'

更新:我得到了错误的命令。上述命令无法脱机工作。这是正确的:

date -ud "$(svn info | sed -nE 's/^Last Changed Date: (S+ S+ S+).*/1/p')" '+%s'

我很傻。一旦我真正意识到我只需要将一个时区转换为另一个时区,很明显:

date -u +[format] -d $(svn info | <some grepping and cutting here>)

就我而言,这是:

date -u +"%Y%m%d-%H%M" -d "$(svn info | grep 'Date' | cut -d' ' -f4-6)"

当然,我的解决方案可能不是最佳的,如果有人知道更好的方法,那将不胜感激:)

事实证明,"svn info"的 xml 输出有一个祖鲁语时间戳:

$ svn info --xml | grep date
<date>2015-04-30T15:38:49.371762Z</date>

所以你的 bash 命令可能是:

svn info --xml | grep -oP '(?<=<date>).*?(?=</date>)'

我只是偶然发现了这篇文章。 最终发现 svn 使用 env 变量 TZ ,例如:

TZ= svn log

将以 UTC 格式记录日期

相关内容

  • 没有找到相关文章

最新更新