3 回答
TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊
接收后掛鉤從stdin中以形式獲取參數(shù)<oldrev> <newrev> <refname>。由于這些參數(shù)來(lái)自標(biāo)準(zhǔn)輸入,而不是命令行參數(shù),因此需要使用read代替$1 $2 $3。
后收到鉤可以接收多個(gè)分支一次(例如,如果有人做了git push --all),所以我們還需要包裹read在一個(gè)while循環(huán)。
一個(gè)有效的代碼段看起來(lái)像這樣:
#!/bin/bash
while read oldrev newrev refname
do
branch=$(git rev-parse --symbolic --abbrev-ref $refname)
if [ "master" = "$branch" ]; then
# Do something
fi
done
TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
接收后掛鉤在stdin上獲得的最后一個(gè)參數(shù)是ref的更改,因此我們可以使用它來(lái)檢查該值是否為“ refs / heads / master”。紅寶石有點(diǎn)類似于我在接收后掛鉤中使用的紅寶石:
STDIN.each do |line|
(old_rev, new_rev, ref_name) = line.split
if ref_name =~ /master/
# do your push
end
end
請(qǐng)注意,對(duì)于推送的每個(gè)引用,它都會(huì)獲得一行,因此,如果您推送的不僅僅是master,它仍然可以工作。
TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊
斯特凡的答案并沒(méi)有為我工作,但這樣做的:
#!/bin/bash
echo "determining branch"
if ! [ -t 0 ]; then
read -a ref
fi
IFS='/' read -ra REF <<< "${ref[2]}"
branch="${REF[2]}"
if [ "master" == "$branch" ]; then
echo 'master was pushed'
fi
if [ "staging" == "$branch" ]; then
echo 'staging was pushed'
fi
echo "done"
- 3 回答
- 0 關(guān)注
- 1295 瀏覽
添加回答
舉報(bào)
