35

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?

Useless
  • 64,155
  • 6
  • 88
  • 132
Rasmus Christensen
  • 8,321
  • 12
  • 51
  • 78

2 Answers2

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)
    }
Brad Mace
  • 27,194
  • 17
  • 102
  • 148
BuvinJ
  • 10,221
  • 5
  • 83
  • 96
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