新しいブランチが作成されたかどうかをチェックする git フックを書いています。ただし、ブランチは実際には作成中のため、私のロジックは失敗します。
現在、私はこれをpost-receive
フックで行っています。これは次のようになります。
#!/bin/sh
read oldrev newrev refname
branch=$(git rev-parse --symbolic --abbrev-ref $refname)
echo "branch is $branch"
echo "oldrev is $oldrev and newrev is $newrev"
# if $oldrev is 0000...0000, it's a new branch
# also check if the branch is of the format "feature_<name>"
zero="0000000000000000000000000000000000000000"
if [ "$oldrev" = "$zero" ] && [[ $branch =~ feature_.+ ]]; then
#create a temp repo
temp_repo=`mktemp -d /tmp/repo.XXXXX`
cd $temp_repo
git clone $git_url
#here i create the config file needed, called file_name
git checkout "$branch"
git add "$file_name"
git commit -m "Added config file"
git push origin $branch
fi
これは既存のブランチでは機能しますが、新しく作成されたブランチではエラーが発生しますfatal: Not a git repository: '.'
。
についてあまり知らないので、このロジックをどのフックで使用すればよいかわかりませんgit
。これについてどうすればいいですか?
ありがとう