Redmine + Gitolite-проблема с разрешениями репозитория и многое другое
у меня есть установка Redmine на том же сервере, что и мои репозитории gitolite.
чтобы связать мой репозиторий с моим экземпляром Redmine, я локально клонировал РЕПО со следующей командой:
git clone --bare --local /home/git/repositories/my-repo.git
как только я успешно клонирую РЕПО на сервере, я могу перемещаться по РЕПО на Redmine, как и ожидалось.
дело в том, что, как только я это сделаю, я не могу больше ничего нажимать на удаленное РЕПО на моей локальной машине.
Когда Я попробуй!--5-->
git push
Я получаю следующие ошибки:
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'
есть идеи по этому поводу?
правка #1
журналы gitolite показывают следующее:
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
2 ответов
мне удалось заставить его работать, указывая оригинальное РЕПО на Redmine, так как оба сидят на одной машине, выполнив несколько простых шагов:
- добавьте репозиторий на Redmine с исходным РЕПО репозитория gitolite. Путь будет чем-то вроде - /home/git/repositories/my-repo.git.
- первоначально Redmine не имеет никаких разрешений на чтение репозитория, поэтому мы исправляем проблему, добавляя пользователя Redmine (обычно - www-dataили- apache) в the- gitгруппы под управлением- usermod -a -G git www-data(имейте в виду конфигурацию вашего сервера, потому что это может быть немного иначе, в зависимости от того, как вы сконфигурировали gitolite.
- изменить - UMASKсобственности на- .gitolite.rcfile, от значения по умолчанию- 0077to- 0022, что эквивалентно- 755 (rwxr-xr-x)для каталогов и- 644 (rw-r--r--)для файлов.
- для существующих репозиториев вам может потребоваться запустить - chmod -R g+rX
если вы все еще испытываете проблемы с разрешениями с Redmine, где он открывает 404вместо РЕПО на вкладке репозиторий может потребоваться запустить chmod -R g+rX в целом /home/git/repositories, чтобы убедиться, что пользователь Redmine может прочитать весь путь через репозитории.
Если git repack remote/origin/master не устраняет проблему, проверьте umask (umask 0002), чтобы избежать каких-либо проблем с разрешением на запись, как указано в "git: не удается нажать (ошибка распаковки)".
кроме того, "ошибка распаковки Git-pushing из голого РЕПО на промежуточный сервер" суммируйте все остальные моменты, чтобы проверить.
