I want to hook into the creation of a new branch. Either when the branch is created or when the first push is done. Is one or both possible?
The accepted answer says to use the update hook. I'm not sure that helps everyone, as that is a server-side hook. It will work if you push your new branch, but what about keeping it purely local?
I'm creating local branches that are never pushed, so I'm using post-checkout instead. After creating your branch, aren't you typically going to check it out before doing anything else with it? When I detect a new branch, I modify it and add a commit automatically. After that, I'm able to determine if this is a new branch on a checkout by virtue of whether it has a commit history.
Here's how I do it (my hooks are in bash):
true=1
false=0
isNewBranch()
{
local logQuery=$(git log --all --not $(git rev-list --no-walk --exclude=refs/heads/$(getBranchName) --exclude=HEAD --all))
if [ -z $logQuery ]; then
echo $true
else
echo $false
fi
}
getBranchName()
{
echo $(git rev-parse --abbrev-ref HEAD)
}