Set Up Your Own Git Repository Hosting Service in Three Minutes
Join the DZone community and get the full member experience.
Join For FreeYou might have seen my earlier post "A Review of Free Code Repositories".
Well I forgot about hosting your own. Really handy for hobbyist development. I have one of those free developer servers from Amazon out there somewhere. I don't use it much except to demo the occasional site and so on.
I decided that it was a good idea to set it up as a git repository and show you here how to do this. If you are using something Ubuntu-ish remotely then this should take about three minutes.
A Word of Explanation
This is the simple setup, it avoids creating 'git' user on the remote server, but you DO need to use a seperate key for using the git service and I show you that first.
On your local machine:
# echo "Host gitserver Hostname ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com User git-col PreferredAuthentications publickey IdentityFile ~/keys/git-col.pub " >> ~/.ssh/config # mkdir ~/keys
# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/col/.ssh/id_rsa): git-col.pub # do NOT accept the default
# cp git-col* ~/keys # scp git-col.pub ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com: # ssh ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com
On your remote host you are now logged in as 'ubuntu':
# sudo apt-get install git # git clone git://github.com/sitaramc/gitolite # ./gitolite/src/gl-system-install # gl-setup -q ~/git-col.pub # exit
On your local machine:
# git config --global user.name "Your Name" # git config --global user.email your@email.address # git clone gitserver:gitolite-admin # exit
That's it really. To create a new repository called dummy and initialize it, you can do something like this.
On your local machine:
# set the new repository name export repo=dummy # update the gitolite conf file with your new repository cd ~/gitolite-admin echo " repo ${repo}" >> conf/gitolite.conf echo " RW+ = @all" >> conf/gitolite.conf # push the config to your server git commit -m "added new repository ${repo}" conf/gitolite.conf git push # make sure you cd to an existing directory! mkdir ~/Projects cd ~/Projects # pull back the new empty repository git clone gitserver:${repo} # go to repository and make any change cd ${repo} echo "*.pyc" >> .git/info/exclude # I use python touch README # do your first push back to master git add . git commit -am "repository ${repo} pushed to origin on gitserver" git push origin master
You'll be using that last code section again, so you might want to make it into a script.
Never type anything you don't understand.
If I've made any mistakes then please let me know.
Published at DZone with permission of Col Wilson, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments