Назад | Перейти на главную страницу

Сделайте модуль VirtualMin git SMART

Я использовал модуль git VirtualMin для настройки частного git через http на одном из моих серверов. У меня есть другие серверы с git через ssh, но это была моя первая попытка настроить его через http и с VirtualMin.

К сожалению, в последние несколько часов я обнаружил, что модуль VirtualMin по умолчанию не использует интеллектуальный режим http и не ретранслирует в DAV для отправки коммитов на сервер. Что мне не очень нравится.

Также я попытался переместить свои старые репозитории на этот сервер, и я не могу их использовать, потому что нет файла / info / ref. (Я также слышал, что в режиме smart http мне не нужен этот файл)

В результате я попытался найти документ об установке smart git http и нашел много. Но я не думаю, что какой-либо из них совместим с VirtualMin или его модулем git по умолчанию,

Кто-нибудь из вас знает, как мне нужно настроить установку моего git и параметры Apache, чтобы использовать интеллектуальный протокол http, не повредив VirtualMin, и при этом быть совместимым с VirtualMin?

Я действительно не хочу, чтобы мои настройки и конфигурации удалялись после обновления VirtualMin или процесса восстановления настроек, что обычно делают эти панели управления.

Пожалуйста, поделитесь со мной своими мыслями по этому поводу. Спасибо

ОС: CentOs 6.5 x64

Взято из Настройка Smart HTTP для Git на Virtualmin.


Из Вот Решением было переключиться с обычного HTTP на Smart HTTP с помощью исполняемого файла git-http-backend, который мог выполнять все перехватчики, и предположительно намного быстрее.

  1. Скопируйте исполняемый файл git-httpd-backend в каталог / home / domain / cgi-bin / и установите разрешения на domain: domain. Это сделано для того, чтобы избежать проблем с suexec.

    $ cp /usr/libexec/git-core/git-http-backend /home/domain/cgi-bin
    $ chown domain:domain /home/domain/cgi-bin/git-http-backend
    
  2. На /etc/httpd/conf/httpd.confдобавьте это в VirtualHost для домена:

    [...]
    ServerName domain.com
    
    [...]
    
    # Set the root directory where git repositories reside
    SetEnv GIT_PROJECT_ROOT /home/domain/public_html/git
    
    # By default, the git-http-backend allows push for authenticated
    # users and this directive tells the backend when a user is authenticated.
    SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
    
    # Export all repositories
    SetEnv GIT_HTTP_EXPORT_ALL
    
    ScriptAlias /dev/ /home/domain/cgi-bin/git-http-backend/
    
    [...]
    
    # Add this if it’s not already there
    
    DAV on
    AuthType Basic
    AuthName domain.com
    AuthUserFile /home/domain/etc/git.basic.passwd
    Require valid-user
    Satisfy All
    
    RedirectMatch ^/git(/+)$ /git/gitweb.cgi
    RewriteEngine off
    AddHandler cgi-script .cgi
    
    [...]
    
  3. А затем перезапустите apache. Теперь все репозитории доступны по адресу http://gituser@domain.com/dev/git/*, например, http://gituser@domain.com/dev/git/reponame.git, и все хуки будут выполняться должным образом.

В дальнейшем, когда вы создаете новое репо через Virtualmin, вам необходимо выполнить следующие действия вручную:

  1. Создать пустой файл /home/domain/public_html/git/reponame.git/git-daemon-export-ok.

  2. Создайте это как /home/domain/public_html/git/reponame.git/hooks/post-receive и сделать его исполняемым для всех и принадлежать apache: domain:

    #!/bin/sh
    #
    # An example hook script for the "post-receive" event.
    #
    # The "post-receive" script is run after receive-pack has accepted a pack
    # and the repository has been updated. It is passed arguments in through
    # stdin in the form
    #
    # For example:
    # aa453216d1b3e49e7f6f98441fa56946ddcd6a20 68f7abf4e6f922807889f52bc043ecd31b79f814 refs/heads/master
    #
    # see contrib/hooks/ for a sample, or uncomment the next line and
    # rename the file to "post-receive".
    
    # Echo to the client that you’re sending the mail now
    echo "Sending notification email..."
    . /usr/share/git-core/contrib/hooks/post-receive-email
    
    # Make sure to update the git repo info on the server for pulls by other clients
    git update-server-info
    echo "Updated server info."
    
  3. Согласно эта ссылкаустановите разрешения для каталога git следующим образом, чтобы избежать проблем с правами на запись при отправке новых файлов в коммитах (при этом убедитесь, что сценарий gitweb.cgi доступен для записи только владельцу, чтобы избежать ошибок suexec, которые могут появиться в / etc /httpd/logs/suexec.log):

    $ cd /home/domain/public_html/git/
    $ chmod -R g+ws *
    $ chgrp -R domain *
    $ chmod -R g-w gitweb.cgi
    $ chmod -R g-s gitweb.cgi
    
  4. Обновить /home/domain/public_html/git/reponame.git/config чтобы соответствовать следующему:

    [core]
        repositoryformatversion = 0
        filemode = true
        bare = true
    [hooks]
       mailinglist = email1@domain.com, email2@domain.com
       envelopesender = git-commits@domain.com
       emailprefix = "[REPONAME] "