Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 获取上次提交的UTC日期_Bash_Svn_Datetime_Timezone_Commit - Fatal编程技术网

Bash 获取上次提交的UTC日期

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

我正在尝试组合一个bash/sh脚本,该脚本从svn repo获取最后一次提交的UTC时间(其他VCS很简单) 我知道我只需要做svn propget--revprop--rHEAD svn:date,就可以很容易地得到它,但是不能保证svn的签出是在线的,所以如果可能的话,我更喜欢离线版本

可能与从
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