2017-11-21 13 views
0

私はGitHubエンタープライズと一緒に働いており、私たちのレポに新しいプレ受信フックをアップロードする権限はありません。pre-receiveフックからブランチ名を取得するにはどうすればいいですか?

私は事前にプッシュフックとしての私のフックをテストしようとしましたが、それは魔法のように働いていた、 が、私は私たちの管理者に自分のフックを送ったとき、彼は言った:「のGitHub前受けるフックスクリプトはと異なっていますgitの事前受信フックスクリプトのgitシンボリック-REF --shortのHEADは、あなたの期待」

として動作しない場合がありますので、私は、このコマンドを交換する方法を見つける必要があります。へ

current_branch=$(git symbolic-ref --short HEAD) || exit 1 

現在のブランチを "current_branch"パラメータ内に保存するコマンドですか?

どうすればテストできないのですか?

答えて

0

、あなたは「$のもしrefname」第一引数からCURRENT_BRANCHを取得することができます。

while read oldrev newrev refname; do 
    echo "$refname : $oldrev ~ $newrev" 
done 

あなたはみじん切りにし、それはあなたがちょうどこの追加することができますsedを使用してきれいにしたい場合:

while read oldrev newrev refname; do 
    echo "$refname : $oldrev ~ $newrev" 
    current_branch=$refname 
    short_current_branch="$(echo $current_branch | sed 's/refs\/heads\///g')" 
done 

そして、あなたはパラメータ(short_current_branch)

enter image description here

内の支店の名前だけを取得します
1

事前受信フックは、別のGitので実行されているフックです。現在のブランチ Gitは無関係で、事前受信フックで Gitの現在のブランチは無関係です。あなたの実際の仕事が何であれ、 "現在の支店"を使うのは間違いでしょう。

は(そのフックの仕事は、現在のブランチへの更新を展開することであるならば彼らのGitリポジトリの現在のブランチ、ポスト受信フックに関連する可能性がある。しかし、受信GITSは、一般的に「裸」のリポジトリとして設定されていることに注意してください。)標準入力を使用したときに実際に

関連する問題