git
post-receive
Python でフックを開発しています。データは次stdin
のような行で提供されます
ef4d4037f8568e386629457d4d960915a85da2ae 61a4033ccf9159ae69f951f709d9c987d3c9f580 refs/heads/master
最初のハッシュは古い参照、2 番目のハッシュは新しい参照、3 番目の列は更新される参照です。
入力を検証しながら、これを 3 つの変数に分割したいと考えています。ブランチ名を検証するにはどうすればよいですか?
現在、次の正規表現を使用しています
^([0-9a-f]{40}) ([0-9a-f]{40}) refs/heads/([0-9a-zA-Z]+)$
man git-check-ref-format で設定されているように、これは可能なすべてのブランチ名を受け入れるわけではありません。たとえば、build-master
有効な という名前のブランチを除外します。
ボーナスマーク
実際には、「build-」で始まるブランチを除外したいと考えています。これは同じ正規表現で行うことができますか?
テスト
以下の優れた回答を考慮して、 https://github.com/alexchamberlain/githooks/blob/master/miscellaneous/git-branch-re-test.pyにあるいくつかのテストを 作成しました。
ステータス: 以下の正規表現はすべてコンパイルに失敗しています。これは、スクリプトに問題があるか、構文に互換性がないことを示している可能性があります。