我正在编写一个 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
. 知道我该怎么做吗?
谢谢