操作git标签以获取最新部署日期的列表

时间:2014-09-23 19:26:22

标签: git bash

我有一个部署到几个不同客户端的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专家都有简洁的方法来做到这一点?谢谢!

2 个答案:

答案 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用于最新的标签。