post-receive hook fails - any chance to see why?

前端 未结 6 1241
失恋的感觉
失恋的感觉 2021-01-15 05:07

I\'m implementing this approach to send updates to my website:

created bare repository to push to

$ mkdir website.git && cd website.git
$ git         


        
6条回答
  •  野的像风
    2021-01-15 05:42

    Edit, Dec 2016: people are still finding this old answer, and now, 3 years later, I truly understand what the real issue is. The problem occurs when you use a post-receive hook to deploy multiple different branches. If you only ever deploy one branch from a bare repository, you will have fewer problems. Git keeps evolving and the "best" solution for automatic deployment of several branches may vary depending on which Git version you have. See also Git post-receive deployment stops working at random points.

    (Original answer below line.)


    I've found that git checkout -f always needs a branch name; allowing it to use HEAD in bare repositories is not very predictable.

    You may also run into issues with the index (git will write one in the bare repo, but it gets confused at times). It works best to git checkout -f deployment-branch into a new, fresh, empty directory. (It should work to set an index file per deployment-branch, I've just never gotten around to experimenting with this.)

    If your bare repo will be fairly active on other branches than the one(s) used for deployment, it's a good idea to wrap the code with fancier shell-scripting that checks whether the deployment branch in question has actually been changed. That is, if someone updates web-devel, there's no point re-re-re-deploying deployment-branch, which they did not update this time.

提交回复
热议问题