As I was saying at the end of the second post, now that we have everything setup correctly, let's try it!
First you must clone the admin repository. Note that I'll be doing this from my machine instead of the server, but it will work both ways.
$ git clone email@example.com:/gitolite-admin
Add a new repository inside the gitolite.conf file inside the conf folder. I'll add mydomain.com as a test repository. Once done that, add, commit and push the changes.
$ git status modified: conf/gitolite.conf $ git commit -am "Add mydomain.com" 1 file changed, 1 insertion(+), 1 deletion(-) $ git push Counting objects: 7, done. Delta compression using up to 8 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (4/4), 403 bytes | 0 bytes/s, done. Total 4 (delta 0), reused 0 (delta 0) remote: Initialized empty Git repository in /srv/git/repositories/mydomain.com.git/ remote: Cloning into 'mydomain.com'... remote: warning: You appear to have cloned an empty repository. remote: [master (root-commit) 2fc4a4e] Initial commit remote: 6 files changed, 9 insertions(+) remote: create mode 100644 conf/.gitignore remote: create mode 100755 conf/autorun.sh remote: create mode 100755 conf/post-commit.sh remote: create mode 100644 logs/.gitignore remote: create mode 100644 www/404.html remote: create mode 100644 www/50x.html remote: -----Start deploy----- remote: Cloning new repo... remote: Cloning into 'mydomain.com'... remote: fatal: bad object 0000000000000000000000000000000000000000 remote: -----End deploy----- remote: To git@localhost:mydomain.com remote: * [new branch] master -> master To firstname.lastname@example.org:gitolite-admin 34f2281..404d913 master -> masterDon't worry about the fatal: bad object error.
Now, let's go to the server and checkout if it actually worked!
$ tree -a -L 3 /srv/http/ /srv/http/ `-- mydomain.com |-- .git | |-- HEAD | |-- branches | |-- config | |-- description | |-- hooks | |-- index | |-- info | |-- logs | |-- objects | |-- packed-refs | `-- refs |-- conf | |-- .gitignore | |-- autorun.sh | `-- post-commit.sh |-- logs | `-- .gitignore `-- www |-- 404.html `-- 50x.html 11 directories, 11 files
It did! It's working. Now you can clone that new repository
$ git clone email@example.com:mydomain.com
and add an nginx.conf file in the conf folder, an index.html file in the www folder, or whatever you want.
Just one more thing. Note that when you remove a repository from the conf file, the repository isn't removed from either /srv/http/ nor from /srv/git/repositories/. The correct way of removing a repository is first removing it from the conf file and then issuing an rm -rf.
I hope you find this 3 parts post useful. If you find any bugs or errors or if you have any comments, please use the comments section or email me and I'll try to fix them and/or help you.