Git пост-получение через HTTP в OS X - PullRequest
1 голос
/ 05 декабря 2011

Моя настройка:1. OS X работает Apache сервер для хранения Git.2. Мой каталог для проектов Git находится здесь: / Library / WebServer / Documents / CI3. Я следовал этому руководству: http://www.pkgbox.org/wordpress/2011/08/setting-up-a-git-server-on-macos-x-lion/ и настроил доступ Git по HTTP4. Мой gitrepo.conf похож на:

DavLockDB "/var/www/DavLock/Lock"
DavMinTimeout 28800

<Directory /Library/WebServer/Documents/CI>
  DAV On
  Deny from all
  AuthType Basic
  AuthName "Area51 git repositories"
  AuthUserFile /etc/apache2/other/htpasswd-git
  AuthGroupFile /etc/apache2/other/htgroup-git

</Directory>
<Directory /Library/WebServer/Documents/CI/ci_test.git>
Allow from all 
Order allow,deny
Require valid-user
<Limit GET>
Require group myproject-reader
</Limit>
<Limit GET PUT POST DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require group myproject-writer
</Limit>
</Directory>

5.Аутентификация по HTTP работает, у меня есть разные пользователи и разные группы, и все работает нормально.

Моя проблема: Я хочу иметь возможность использовать ловушку после получения вмой мерзавецЯ прочитал этот вопрос: Git post-receive hook не работает И что я получаю оттуда, так это то, что мне нужно настроить SMART HTTP.К сожалению, эта ссылка: http://www.kernel.org/pub/software/scm/git/docs/git-http-backend.html get's me 404.

Я прочитал здесь: http://progit.org/2010/03/04/smart-http.html но я действительно новичок в настройке серверов и не понимаю, что яя предполагаю сделать ... Не могли бы вы предоставить мне действительную конфигурацию для активации перехватчиков GIT?

Предлагаемое решение Переход на SMART HTTP.

Вот мой текущий пример.conf

<VirtualHost *:80>
  ServerName ciserver.smt
  DocumentRoot /Library/WebServer/Documents/CI

  SetEnv GIT_PROJECT_ROOT /Library/WebServer/Documents/CI
  SetEnv GIT_HTTP_EXPORT_ALL

  ScriptAlias / /usr/libexec/git-core/git-http-backend/
  AliasMatch ^/(.*/objects/[0-9a-f]{2}/[0-9a-f]{38})$          /Library/WebServer/Documents/CI/$1
  AliasMatch ^/(.*/objects/pack/pack-[0-9a-f]{40}.(pack|idx))$ /Library/WebServer/Documents/CI/$1

  ScriptAliasMatch \
    "(?x)^/(.*/(HEAD | \
    info/refs | \
    objects/(info/[^/]+ | \
        [0-9a-f]{2}/[0-9a-f]{38} | \
        pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
    git-(upload|receive)-pack))$" \
    /usr/libexec/git-core/git-http-backend/$1

  <LocationMatch "^/.*/git-receive-pack$">
    AuthType Basic
    AuthName "Git"
    AuthUserFile /etc/apache2/other/htpasswd-git
    AuthGroupFile /etc/apache2/other/htgroup-git
   <Limit GET>
    Require group myproject-reader
   </Limit>
   <Limit GET PUT POST DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
    Require group myproject-writer
   </Limit>
     </LocationMatch>
</VirtualHost>

Я изменил / etc / hosts, чтобы добавить ciserver.smt как указывающий на 127.0.0.1 Теперь я не могу сделать этот запрос:

git clone http://username@ciserver.smt/ci_test.git

I 'я получаю:

error: The requested URL returned error: 403 while accessing http://username@ciserver.smt/ci_test.git/info/refs

fatal: HTTP request failed

Что я еще не так сделал?

1 Ответ

1 голос
/ 05 декабря 2011

Кажется, что вы не можете запускать перехваты в репозитории webdav.Но вы можете использовать интеллектуальный протокол HTTP (который входит в веб-сервер через CGI), который обрабатывает перехваты.

Подробнее см. http://dev.bazingaweb.fr/2011/02/23/how-to-set-up-git-over-http.html.

...