How to set up a GIT bare repository for code pushes

Estimated reading: 2 minutes

Developers often need an easy and simple way of sharing code changes to a development and production setup.

This can be easily achieved by setting up a git bare repository and setting it as a remote git repository in your codebase. Git bare repositories are great because it’s the perfect setup for sharing code.

In order to make this work, we first need to go to domains and click manage on the domain we want to do the setup.

The next step is to enable SSH as a login method since we’re going to use that as the authentication method for getting to the bare git repo.

Now we can use the domain credentials to login via SSH on the server as the domain’s user. In case you need to set up your server firewall to accept SSH connections you can read the Firewall Setup KB article.

Once logged in, your domain’s root folder is set up at /home/~domain_username . Make sure you’re in the domain root folder before carrying on with the tutorial. We are assuming you are deploying for the production environment. If you are using Dev Environments and want to deploy to a different environment, please replace “live” with your environment name in the commands bellow.

cd web/live
mkdir .gitrepo
cd .gitrepo/
git init --bare
cd hooks/
touch post-receive
chmod +x post-receive
vim post-receive

Now in the post-receive file, we’re going to set up specific code that will checkout the received changes automatically in the domain’s root folder. This can also be set up for other usefull functions like making sure file permissions are correctly setup, or specific post-deployment scripts are run.

We have two options for setting up the checkout:

1. Checking out only a specific branch

GIT_WORK_TREE=../ git checkout -f [branch]

2. Checking out any receiving branch (this is useful for a development setup)

while read oldrev newrev refdo
    branch=´echo $ref | cut -d/ -f3´
GIT_WORK_TREE=../ git checkout -f $branch

Once that’s done, you can use the remote repository after you add it to your local git repository using the following command:

git remote add [remote-name] ssh://[user]@[site]/~/web/live/.gitrepo

Now you can just push your code changes to the remote git bare repository and see your changes appear on the server.

Share this Doc