Redmine + Gitolite – Issue with repository permissions and more

I have a Redmine installation on the same server as my gitolite repositories.

In order to link my repository to my Redmine instance, I locally cloned the repo with the following command:

  • Building packages using sbt-git results in “SNAPSHOT-SNAPSHOT” version qualifier
  • Combining Multiple Sites into a single Git Repo
  • git and maven and releases and merges
  • Why can't I run git add -uA?
  • Git: Finding a deleted file in git, commits not in log
  • publish jekyll generated to gh-pages and not overwrite the .git in _site
  • git clone --bare --local /home/git/repositories/my-repo.git
    

    Just as I successfully clone the repo on the server, I can navigate through the repo on Redmine, as expected.

    The thing is, as soon as I do that, I can’t push anything more to the remote repo on my local machine.

    When I try

    git push
    

    I get the following errors:

    Counting objects: 15, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (7/7), done.
    Writing objects: 100% (8/8), 695 bytes, done.
    Total 8 (delta 6), reused 0 (delta 0)
    fatal: loose object 455f30c5243ec5b5cc698b1e51bdfb23ee6c1b22 (stored in     ./objects/45/5f30c5243ec5b5cc698b1e51bdfb23ee6c1b22) is corrupt
    error: unpack failed: unpack-objects abnormal exit
    To git@dev.my-host.org:my-repo.git
     ! [remote rejected] master -> master (n/a (unpacker error))
    error: failed to push some refs to 'git@my-host.org:my-repo.git'
    

    Any ideas on that?

    EDIT #1

    The gitolite logs show the following:

    2012-10-22.10:59:59     13121   ssh     ARGV=drgomesp   SOC=git-receive-pack 'my-repo.git'   FROM=187.65.248.7
    2012-10-22.11:00:00     13121           access(my-repo, drgomesp, W, 'any'),-> refs/.*
    2012-10-22.11:00:00     13121           trigger,Writable,access_1,ACCESS_1,my-repo,drgomesp,W,any,refs/.*
    2012-10-22.11:00:00     13121   pre_git my-repo      drgomesp        W       any     -> refs/.*
    2012-10-22.11:00:00     13121           system,git,shell,-c,git-receive-pack '/home/git/repositories/my-repo.git'
    2012-10-22.11:00:00     13121   END
    

  • Recovering a commit made with no branch
  • Vim: Warn if file is not tracked in Git
  • How to apply a Git patch to a file with a different name and path?
  • Pushing an existing svn repository to git
  • How to trigger a individual job in jenkins with github repository
  • Aptana fatal: Unable to create '.git/index.lock': File exists
  • 2 Solutions collect form web for “Redmine + Gitolite – Issue with repository permissions and more”

    I managed to get it working pointing the original repo to Redmine, since both sit on the same machine, by following some simple steps:

    1. Add a repository on Redmine with the original repo of gitolite’s repository. The path would be something like /home/git/repositories/my-repo.git.

    2. Initially, Redmine doesn’t have any permissions to read the repository, so we fix the problem by adding the Redmine user (usually www-data or apache) to the git group by running usermod -a -G git www-data (be aware of your server’s configuration, because that can be a little different, according to how you configurated gitolite.

    3. Change the UMASK property on the .gitolite.rc file, from the default value of 0077 to 0022, the equivalent of 755 (rwxr-xr-x) for directories and 644 (rw-r--r--) for files.

    4. For existing repos, you might need to run a chmod -R g+rX

    If you still experience the permissions trouble with Redmine, where it opens a 404instead of the repo on the repository tab, you might have to run a chmod -R g+rX on the whole /home/git/repositories, in order to make sure the Redmine user can read all the way through the repos.

    If a git repack remote/origin/master doesn’t fix the issue, check your umask (umask 0002) to avoid any writing permission issue, as mentioned in “git: can’t push (unpacker error)”.

    Beside that, “Unpacker error Git-pushing from bare repo to staging server” summarize all the other points to check.

    Git Baby is a git and github fan, let's start git clone.