Search code examples
gitdebiangitolitegitlab

GitLab not interacting with Gitolite


I got GitLab installed and configured. I added my public key to my account and then added a project. Unfortunately, the project does not appear to exist in Gitolite, nor do my keys appear to have been added (not in .gitolite/keydir or .ssh/authorized_keys)

GitLab doesn't complain, the project is created fine. Permissions are correct, according to gitlab:app:status, but it says the post_receive file is missing for the project.. which is unsurprising since there is no project in /home/git/repositories

gitlab@server:~$ bundle exec rake gitlab:app:status RAILS_ENV=production
Starting diagnostics
config/database.yml............exists
config/gitlab.yml............exists
/home/git/repositories/............exists
/home/git/repositories/ is writable?............YES
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (6/6), done.
Can clone gitolite-admin?............YES
UMASK for .gitolite.rc is 0007? ............YES
/home/git/.gitolite/hooks/common/post-receive exists? ............YES
Validating projects repositories:
Herp.....post-receive file missing
rake aborted!
unexpected return

Tasks: TOP => gitlab:app:status
(See full trace by running task with --trace)

EDIT: The gitolite-admin repo does exist. I'm able to both clone the gitolite-admin repo and write in that directory:

gitlab@server:~$ git clone git@localhost:gitolite-admin.git /tmp/gitolite-admin
Cloning into '/tmp/gitolite-admin'...
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
Receiving objects: 100% (6/6), 751 bytes, done.
remote: Total 6 (delta 0), reused 0 (delta 0)

gitlab@server:~$ mkdir /home/git/repositories/test
gitlab@server:~$ touch /home/git/repositories/test/asdf

I'm at a loss and GitLab is unusable as a result. What do I do? I'm not sure where to even start looking.

Thanks in advance.


Solution

  • For me, the root of this problem was that commits to the gitolite-admin repos were being rejected:

    2012-11-05.18:54:07     gitlab  127.0.0.1       git-receive-pack 'gitolite-admin'
    2012-11-05.18:54:07     gitlab  127.0.0.1       Die generated at line 251 in /home/git/bin/gl-compile-conf : <<newline>>                ***** ABORTING *****<<newline>>        git config core.sharedRepository not allowed<<newline>>check GL_GITCONFIG_KEYS in the rc file for how to allow it<<newline>> <<newline>>
    

    When I checked if /home/git/.gitolite.rc for GL_GITCONFIG_KEYS I found out that the variable had the value empty string. I had to change it manually:

    $GL_GITCONFIG_KEYS = ".*";
    

    (I extrapolated from the migration sed line as specified in issue 1769 - I think the given sed line is broken)

    For gitolite v3 you might need to set this variable instead

    $GIT_CONFIG_KEYS = '.*';
    

    Adding this variable fixed the issue for me.

    Edit: Alternative problem and solution suggested by japgolly is that the install instructions forget a step:

    sudo -u gitlab git config --global user.name Gitlab
    sudo -u gitlab git config --global user.email gitlab@localhost
    

    which also causes commits to gitolite-admin to fail (silently)