Background: Developing a Facebook app using PHP Laravel framework & MySQL for database.
I have setup Gitlab on our development server and created a repository on it where the team has been added and is committing & pushing code.
What I would like to do is, when I push code to a particular branch on GitLab (for example Master) I would like it to be available at /var/www/productname so that I can test it within the Facebook canvas as well (certain things happen there that can't be tested on your local machine).
However, I don't want the hook to copy all the files over every time a push happens on master, just the files that were modified.
Can anyone help out with such a hook?
Thank you.
You would need to add to the bare repo (managed by GitLab) a
post-receive
hook which would:That would be:
You can make sure that hook will only be active if someone pushes on branch
master
:For the checkout done by that hook, see "GIT post-receive checkout without root folder", that is:
make sure you specify
--git-dir
and--git-work-tree
:Again,
/path/to/your/workingtree
can be:Use rsync rather than cp for this operation. It does diff checking automatically. that way your post-commit hook doesn't become needlessly complicated.
This post on Seb Duggan blog describe it nicely. You simply create
post-receive
hook that contain:Add it
+x
flag and it will checkout your repo in given folder.