I have been wanting to have my own local software development repository. My development 'mode' is ON again and ready to rock-and-roll. While using Visual Studio 2013, I noticed that it natively supports Git. Looking it further, found
this amazing tutorial jump start of Git on MVA.
Git is a distributed repository model, however it also supports remote repository where commits can be pushed to the central remote repository and be shared with others if needed.
I am running my own Ubuntu server and while developing on my Visual Studio 2013 Git-ing locally, I would also like to 'Sync' all the commits to the central repository. So setting up Git 'Server' on my Ubuntu server is a good idea.
Git supports multiple protocols, like SSH, Git and HTTP. I prefer the later as I might want to collaborate with other developers in the future and HTTP is the better option for that.
I have Ubuntu 14.04 LTS Running Apache 2.4.7
Install Git
So, firstly first -setting up Git on Ubuntu server by running apt-get:
apt-get install git-core
Directory Structure
Now, I am going to create the home folder for this site located in:
/home/www/git, then create different path for each prod, test and dev repos. To do that:
cd /home/www
mkdir git
cd git
mkdir prod
cd prod
mkdir repo01
cd repo01
git --bare init
git update-server-info
As you can see above, I am creating the first Git repo in
/home/www/git/prod/repo01 and initialise the Git bare repository. Do the same thing for each test and dev repos.
Next, let's take ownership of the file structure
cd /home/www/git
chown -R www-data.www-data .
Apache Configuration
Next is to configure Apache2 to enable WebDAV Module and setup a new site for Git:
To enable WebDAV on Apache2, run the
a2enmod command:
a2enmod dav_fsafter you enable the module, you can check with
a2query
a2query -m dav_fs
a2query -m dav
To create the site, do the following:
cd /etc/apache2/sites-available
vi git.domain.tld.conf
once the editor opens, use this content:
<VirtualHost *:80>
ServerAdmin info@domain.tld
ServerName git.domain.tld
ServerAlias git2.domain.tld
#Indexes + Directory Root
DirectoryIndex index.php
DocumentRoot /home/www/git/
#Log Files
ErrorLog /home/www/log/git.error.log
CustomLog /home/www/log/git.access.log combined
<Directory /home/www/git>
DAV on
Require all granted
</Directory>
</VirtualHost>
The most important line is the DocumentRoot where you points to the folder where the root of Git repository will be. The second one is DAV on for WebDAV.
At this stage there is NO authentication and authorization setup on the Apache VirtualHost and I will show you how to use Active Directory as the LDAP for authentication later. Also noted that it is running on HTTP only at this point. In the future if I would like to publish this to the Internet, I will setup a reverse-proxy with HTTPS on the Internet-facing interface.
Testing Git
To test Git, on the client side:
mkdir /home/user/test
cd /home/user/test
git init
git remote add origin http://git.domain.tld/prod/repo01
touch index.php
git add .
git commit -a -m "Testing commit"
git push origin master
have fun!