、あなたは、refs/heads/
またはrefs/for/
を仮定するべきではありません(refs/tags/
)をプッシュし、おそらく他のプッシュ(例えば、引用文献/ノート/、 refs/stashなど)。
たとえば、git push there refs/heads/master:refs/for/something refs/tags/v1.2:refs/tags/v1.2 refs/remotes/origin/master:refs/heads/master
などを実行して3つのプッシュを同時にリクエストできることに注意してください。プッシュプッシュフックのループ内のすべてのリクエストを読み取る必要があるのはこのためです。
あなたが使用しているコメントで提案されている:
remote_ref >> remote.txt
remote_ref1 = cat remote.txt | cut -d'/' -f3
rm remote.txt
いくつかの構文エラーがあります。
それは接頭辞チェックに賢明だし、それはあなたが期待するものだと扱いたい場合、接頭を取り除きます。たとえば、feature/tall
という名前のブランチを使用している場合、または最初の2つのコンポーネントを超える参照構造を使用している場合(リモートトラッキングブランチはこのように動作しますが、通常はそうですが)、3番目の単語を抽出しないでください。あなたはそれらをプッシュしないだろう)。
SH/bashスクリプト言語では、あなたが例えば、書くことができます。
case $local_ref in
refs/heads/*)
local_type=branch
local_short=${local_ref#refs/heads/}
;;
*)
local_type=unknown
;;
esac
case $remote_ref in
refs/heads/*)
remote_type=branch
remote_short=${remote_ref#refs/heads/}
;;
refs/for/*)
remote_type=gerrit
remote_short=${remote_ref#refs/for/}
;;
*)
remote_type=unknown
;;
esac
今、あなたは参照型をデコードし、知られている例のための短いバージョンを発見した、あなたはあなたのあたり-ケースロジックを記述することができていること、および後で適切に延長してください:
case $local_type,$remote_type in
branch,branch|branch,gerrit)
# push from branch to branch, or from branch to gerrit:
# require that the shortened names match exactly (for now)
if [ $local_short != $remote_short ]; then
echo "push to $remote_type requires paired names" 1>&2
echo "but you are pushing from $local_short to $remote_short" 1>&2
exit 1
fi
;;
*)
# echo "unknown reference type - allowing" 1>&2 # uncomment for debug
;;
esac
このすべては、メインのwhile read ...
ループ内に入ります。ループの終わりにすると、すべてあなたが押している参照が検証されています(エコーと終了コードによって拒否されたものはありません)。
「else exit 0」を削除します。フックの名前が正確に 'プッシュプッシュ'であり、実行可能であることを確認してください。私のブランチ名が同じ場合 したがってヘリット/レビュー枝に私の変更をプッシュしていますので、= = Mybranch ローカルおよびリモートレフリーが//Mybranch のためにどのように私は、引用文献をカットすることができ、私の – ElpieKay
こんにちはこれもために/私にエラーを与えています/ remote_ref変数から? – Saurabhdv27
ブランチを押すと 'local_ref'は' refs/heads/Mybranch'、 'remote_ref'は' refs/for/Mybranch'です。 | local_ref local_sha remote_ref remote_sha 行う remote_refを読みながら>> remote.txt \t remote_ref1 =猫remote.txtを: – ElpieKay