2014-09-23 32 views
0

我有一個部署到幾個不同客戶端(client_a,client_b,client_c)的rails應用程序。每次部署時,我們正在部署的提交都有用部署目標和日期進行標記,例如client_b_201409231526。這意味着,當我運行git tag我得到類似以下的列表:操作git標籤以獲取最近部署日期列表

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專家有一個簡明的方法來做到這一點?謝謝!

+1

您是不是在尋找'client_a_20140528160728','client_b_20140203193553'和'client_c_20140917142911',如果您說_last_您部署了該網站? – Wrikken 2014-09-23 19:29:06

+0

是哎呀謝謝,我會修改。 – lucas 2014-09-23 19:41:35

回答

2

假設@Wrikken是你真正想要以下工作輸出正確的:

awk -F _ '$3 > a[$1"_"$2]{a[$1"_"$2]=$3} END {for (c in a) {print c"_"a[c]}}' 
0

如果你不使用註釋標籤,那麼你應該使用註釋標籤。他們有一個內置的日期/時間戳。

所以假設你正在使用附註的標籤,那麼你就能夠做到這一點

git for-each-ref --sort=taggerdate --format='%(refname)' refs/tags/client_a* 

這將打印出來的標籤排序的順序,那麼你可以管tail -1爲最近。

+0

我目前沒有使用帶註釋的標籤。感謝您的建議! – lucas 2014-09-24 22:48:57

+0

'git tag -m「你想要的任何消息都是你需要創建帶註釋的標籤並且可能會爲你簡化一些事情 – 2014-09-25 02:45:53