Bash 获取上次提交的UTC日期
我正在尝试组合一个bash/sh脚本,该脚本从svn repo获取最后一次提交的UTC时间(其他VCS很简单) 我知道我只需要做svn propget--revprop--rHEAD svn:date,就可以很容易地得到它,但是不能保证svn的签出是在线的,所以如果可能的话,我更喜欢离线版本 可能与从Bash 获取上次提交的UTC日期,bash,svn,datetime,timezone,commit,Bash,Svn,Datetime,Timezone,Commit,我正在尝试组合一个bash/sh脚本,该脚本从svn repo获取最后一次提交的UTC时间(其他VCS很简单) 我知道我只需要做svn propget--revprop--rHEAD svn:date,就可以很容易地得到它,但是不能保证svn的签出是在线的,所以如果可能的话,我更喜欢离线版本 可能与从svn info获取UTC时间有关?(通过拧紧时区) 摘要:在无法访问服务器的情况下,如何获取svn提交的UTC时间 谢谢,我真傻。当我真正意识到我只需要将一个时区转换为另一个时区时,很明显: da
svn info
获取UTC时间有关?(通过拧紧时区)
摘要:在无法访问服务器的情况下,如何获取svn提交的UTC时间
谢谢,我真傻。当我真正意识到我只需要将一个时区转换为另一个时区时,很明显:
date -u +[format] -d $(svn info | <some grepping and cutting here>)
当然,我的解决方案可能不是最优的,如果有人知道更好的方法,那将非常感激:)我很傻。当我真正意识到我只需要将一个时区转换为另一个时区时,很明显:
date -u +[format] -d $(svn info | <some grepping and cutting here>)
当然,我的解决方案可能不是最优的,如果有人知道更好的方法,那将不胜感激:)您可以使用
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
选项使日期
改为显示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'
您可以使用
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
选项使日期
改为显示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'
“svn info”的xml输出有一个zulu时间戳:
$ svn info --xml | grep date
<date>2015-04-30T15:38:49.371762Z</date>
$svn信息--xml | grep日期
2015-04-30T15:38:49.371762Z
因此,您的bash命令可能是:
svn info --xml | grep -oP '(?<=<date>).*?(?=</date>)'
svn info--xml | grep-oP'(?结果是“svn info”的xml输出有一个zulu时间戳:
$ svn info --xml | grep date
<date>2015-04-30T15:38:49.371762Z</date>
$svn信息--xml | grep日期
2015-04-30T15:38:49.371762Z
因此,您的bash命令可能是:
svn info --xml | grep -oP '(?<=<date>).*?(?=</date>)'
svn info--xml | grep-oP'(?我偶然发现了这篇文章。最终发现svn使用了env变量TZ
,例如:
TZ= svn log
将以UTC记录日期我刚刚偶然发现了这篇文章。最终发现svn使用了env变量TZ
,例如:
TZ= svn log
是否将日期记录在UTC中您的问题是什么?可能有点不清楚,添加了摘要您的问题是什么?可能有点不清楚,添加了摘要尼斯!您使用了sed而不是我的grep/cut组合。会有什么显著区别吗?@LordAro没什么。很好!您使用了sed而不是我的grep/cut组合。会有吗有什么显著的区别吗?@LordAro没有什么。为了澄清,这将此命令的TZ
变量设置为空字符串,然后运行svn log
。为了澄清,这将此命令的TZ
变量设置为空字符串,然后运行svn log
。