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?
Asked
Active
Viewed 1.6k times
2 Answers
28
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)
}
12
It's the update hook, it gets a zero sha for new refs, branches will say heads not tags

jthill
- 55,082
- 5
- 77
- 137
-
4Documentation link for reference: http://git-scm.com/book/en/Customizing-Git-Git-Hooks – Useless Jan 12 '13 at 22:14
-
2Can someone share an implementation of this? – Naguib Ihab Aug 19 '19 at 04:39