Automatic creation of repository when using gitolite
The last couple of days I've been playing around with git and setup my own git server using first gitosis and then gitolite. When playing around I created a lot of different test repositories to make sure everything work. To stop repeating myself I created three minor bash functions to make it easier to add repositories in gitocline. The script I ended up with are the following:
ar() {
if [ "$1" == "" ] ; then echo "[E] One arg is needed!"; return 1;
else
cd ~/<some path to your>/gitolite-admin/conf
echo -e "" >> gitolite.conf
echo -e "repo ${1}" >> gitolite.conf
echo -e "RW+ = <your gitolite username>" >> gitolite.conf
cd ..
git commit -am "Added repo ${1}"
git push
fi
}
sr() {
if [ "$1" == "" ] ; then echo "[E] One arg is needed!"; return 1;
else
mkdir <path to where you have your repositories>/${1}
cd <path to where you have your repositories>/${1}
git init
git remote add origin gitolite@e2n.no:${1}
touch README
git add .
git commit -am "Initial commit"
git push origin master
fi
}
cr() {
if [ "$1" == "" ] ; then echo "[E] One arg is needed!"; return 1;
else
ar ${1}
sr ${1}
fi
}
It is somewhat static code, but I'm not that likely to change where I have the folders on my local computer anyway. I should probably mention that these three functions are stored in the .bashrc file and that I assumes you have checked out the gitolite-admin repository. Let us walk through the three functions.
- ar (short for add repository): will navigate to the configuration folder for gitolite and add the repository plus read and write access for a user name (should probably use a group instead). It will also commit the changes and push them to the server to create the repository.
- sr (short for set up repository): will first create a folder for the repository, then initialize git in that folder, add a remote to your new repository and make an initial commit and push.
- cr (short for create repository): will execute both the above functions.
This will allow us to create a repository and set it up on our local machine by running
$ cr repository_name
That's all.