首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取上次提交的UTC日期

获取上次提交的UTC日期
EN

Stack Overflow用户
提问于 2013-09-20 05:22:47
回答 4查看 502关注 0票数 0

我正在尝试编写一个bash/sh脚本,它可以从svn repo (其他VCSs很容易)获得最后一次提交的协调世界时( UTC time )。我知道我可以直接执行svn propget --revprop -rHEAD svn:date并轻松地获得它,但不能保证svn结帐将是在线的,所以如果可能的话,我更喜欢离线版本。

也许与从svn info获取协调世界时的时间有关?(通过扰乱时区)

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

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-20 05:48:29

我太傻了。当我真正意识到我只需要将一个时区转换到另一个时区时,这是显而易见的:

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)"

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

票数 1
EN

Stack Overflow用户

发布于 2013-09-20 05:48:47

您可以使用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改为显示协调世界时。

实际上我们不需要使用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'
票数 2
EN

Stack Overflow用户

发布于 2015-11-13 15:43:48

原来"svn info“的xml输出有一个zulu时间戳:

$ svn info --xml | grep date

<date>2015-04-30T15:38:49.371762Z</date>

所以你的bash命令可能是:

svn info --xml | grep -oP '(?<=<date>).*?(?=</date>)'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18905140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档