我有一个部署到几个不同客户端的rails应用程序(client_a,client_b,client_c)。每次部署时,我们正在部署的提交都会使用部署目标和日期进行有用标记,例如client_b_201409231526
。这意味着当我运行git tag
时,我会得到类似于以下内容的列表:
client_a_20140520191236
client_a_20140527171716
client_a_20140527174741
client_a_20140528160728
client_b_20140130154136
client_b_20140130160318
client_b_20140130175443
client_b_20140130184939
client_b_20140130222100
client_b_20140203193553
client_c_20140528170811
client_c_20140806180225
client_c_20140818044549
client_c_20140903131535
client_c_20140917142911
我想找到一种简单的方法来打印我上次部署到每个网站的时间,即将上述内容转换为以下内容:
client_a_20140528160728
client_b_20140203193553
client_c_20140917142911
任何bash专家都有简洁的方法来做到这一点?谢谢!
答案 0 :(得分:2)
假设@Wrikken在输出中是正确的,您实际上需要以下工作:
awk -F _ '$3 > a[$1"_"$2]{a[$1"_"$2]=$3} END {for (c in a) {print c"_"a[c]}}'
答案 1 :(得分:0)
如果您没有使用带注释的标签,那么您应该使用带注释的标签。它们内置了日期/时间戳。
假设您使用带注释的标签,那么您就可以这样做
git for-each-ref --sort=taggerdate --format='%(refname)' refs/tags/client_a*
哪个会按排序顺序打印出标签,然后您可以将tail -1
用于最新的标签。