A instalar o GitWeb - como

Acabei de instalar o Git no meu servidor de produção e espero que o GitWeb trabalhe com ele. Fiquei muito interessado em fazê-lo funcionar quando deparei com um tutorial mostrando como fazer o Git web funcionar usando...

git instaweb-d webrick -- start

funciona exactamente como descrito no tutorial at ... http://lostechies.com/jasonmeridth/2009/09/27/git-instaweb/

No entanto, depois de ler outros fóruns, parece que o instaweb não está destinado a ser usado e em vez disso eu deveria configurar GitWeb para correr em Apache.

Sou bastante novo nos Apaches, por isso não estou muito familiarizado com o que devia estar a fazer. Tenho seguido o tutorial em http://unix-heaven.org/node/31 Mas acho que não preciso de tudo. Acho que a única coisa que preciso de fazer é pôr o seguinte no meu httpd.ficheiro conf...

<VirtualHost *:80>
    ServerAdmin <a href="mailto:[email protected]">[email protected]</a>
    ServerName git.example.org
    ServerAlias git-pub.example.org
    RedirectMatch ^/$ /gitweb.cgi
    SetEnv GITWEB_PROJECTROOT /cvs/codeRepository/git

    Alias /gitweb.js                /srv/www/gitweb/static/gitweb.js
    Alias /gitweb.css               /srv/www/gitweb/static/gitweb.css
    Alias /git-logo.png             /srv/www/gitweb/static/git-logo.png
    Alias /git-favicon.png           /srv/www/gitweb/static/git-favicon.png

    ScriptAlias / "/srv/www/gitweb/"

    <Directory "/srv/www/gitweb/">
        AllowOverride None
        Options Indexes FollowSymLinks ExecCGI
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog "/var/log/apache2/httpd-git-pub.example.org-access.log"
    CustomLog "/var/log/apache2/httpd-git-pub.example.org-error.log" common
</VirtualHost>

onde /srv/www/ gitweb / contém....

$:/srv/www/gitweb # ls -ltr
total 252
-rwx------ 1 root root 247917 Feb 27 15:02 gitweb.cgi
drwx------ 2 root root   4096 Feb 27 15:03 static

a configuração que especifiquei acima funciona ou preciso de especificar ? E se assim for em que url vou aceder ao GitWeb? Preciso de serverName, serverAlias e serverAdmin?

Obrigado pela ajuda.
 3
Author: gabeio, 2013-02-27

1 answers

O url que você usaria seria

http://git.example.org

Mas não tenho tanta certeza sobre a tua configuração. O meu é mais simples , e eu recomendo sempre um endereço como http(s)://yourServer/gitweb, em vez de apenas http(s)://yourServer/: se precisar de adicionar mais Serviços, poderá adicionar mais url de raiz (como /gitweb).

Para um acesso http rápido sem autenticação:

# GitWeb on 80
Listen 80
<VirtualHost *:80>

  ServerName git.example.org
  ServerAlias git-pub.example.org

  SetEnv GITWEB_PROJECTROOT /cvs/codeRepository/git
  SetEnv GIT_HTTP_BACKEND "/usr/local/apps/git/libexec/git-core/git-http-backend"

  DocumentRoot /srv/www/gitweb
  Alias /gitweb /srv/www/gitweb

  <Directory /srv/www/gitweb>

    Options ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
    AllowOverride All
    order allow,deny
    Allow from all

    AddHandler cgi-script cgi
    DirectoryIndex gitweb.cgi

  </Directory>

  BrowserMatch ".*MSIE.*" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0

  LogLevel Info
  ErrorLog "/var/log/apache2/gitweb_error_log"
  TransferLog "/var/log/apache2/gitweb_access_log"

</VirtualHost>

Nota: no meu ficheiro de configuração original (que é um modelo, com valores de substituição como @PORT_HTTP_GITWEB@, Eu não usei GITWEB_PROJECTROOT Porque estou a ligar para o Gitolite, que sabe onde estão os repos Git.

Eu defini uma variável na gitweb.conf O arquivo , porém, que desempenha o mesmo papel que GITWEB_PROJECTROOT, de acordo com a documentação do gitweb:

 $projectroot::

A localização absoluta do sistema de ficheiros que será antecedida da localização do projecto; a localização do repositório é $projectroot/$project.
Configurado como $GITWEB_PROJECTROOT durante a instalação.
Esta variável tem de ser configurada correctamente para o gitweb encontrar repositorio.

Por exemplo, se {[14] } for definido como /srv/git colocando o seguinte no ficheiro de configuração do gitweb:

----------------------------------------------------------------------------
our $projectroot = "/srv/git";
----------------------------------------------------------------------------

Depois:

------------------------------------------------
http://git.example.com/gitweb.cgi?p=foo/bar.git
------------------------------------------------

E o seu equivalente baseado em path_ INFO

------------------------------------------------
http://git.example.com/gitweb.cgi/foo/bar.git
------------------------------------------------

Irá mapear o caminho ' / srv/git/foo / bar.git ' no sistema de ficheiros.


Actualização de agosto de 2018, para o Git 2.19 (T3 2018, cinco anos depois)

"git instaweb" foi ajustado para correr melhor com o Apache mais recente ligado RedHat based distros.

Ver commit 757b124 (07 Aug 2018), e commit 1976311 (08 Aug 2018) por Sebastian Kisela (skisela).
(fundido por Junio C Hamano -- gitster -- in commit 93ded33 , 20 ago 2018)

git-instaweb: fixar a configuração do apache2 com o apache > = 2, 4

A configuração gerada pelo apache2 falha com o apache > = 2.4. O registo de erros Estados:

AH00136: Server MUST relinquish startup privileges before accepting connections.  
Please ensure mod_unixd or other system security module is loaded.
AH00016: Configuration Failed

Corrigir isto Carregando o módulounixd.
Isto também funciona com httpd mais velho, por isso não IfVersion condicional é necessário. (Ensaiado com httpd-2.2.15 em CentOS-6.)

 2
Author: VonC, 2018-08-21 07:05:22