Git push не может найти репо и завершается с кодом выхода 128

1122
Nux

Я использую CentOS 5.5 и мне нужно установить git server.

Установил git и установил домашний каталог:

yum install git mkdir -p /home/git cd /home/git/ chmod 777 -R . # yeah I know this is evil, but I want to make it work first... 

Создано репо:

repoName=test-repo cd /home/git/ mkdir $repoName.git cd $repoName.git git --bare init git update-server-info chmod 777 -R . 

Установлен gitweb:

yum install gitweb cp -R /usr/share/gitweb/* /home/git/ 

(для меня gitweb.cgi был в usr / share / gitweb после установки)

Изменена конфигурация gitweb: /etc/gitweb.conf: our $ projectroot = "/ home / git";

И наконец добавил эту конфигурацию в Apache:

<VirtualHost *:80> ServerAlias git.domian.com  DocumentRoot /home/git SetEnv GITWEB_CONFIG /etc/gitweb.conf  <Directory /home/git> Order Allow,Deny Allow from all  Options +ExecCGI AddHandler cgi-script .cgi DirectoryIndex gitweb.cgi </Directory> </VirtualHost> 

Итак, GitWeb работает. Клон работает (URL-адрес http://git.domain.com/test-repo.git ). Но толчок дает:

git.exe push --progress "origin" master:master  fatal: repository 'http://git.domain.com/test-repo.git/' not found   git did not exit cleanly (exit code 128) (62 ms @ 2015-02-09 17:31:29) 

Я попытался добавить конфигурацию для Smart HTTP в конфигурации VirtualHost следующим образом:

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

Но это только изменило сообщение на:

fatal: unable to access 'http://git.domain.com/test-repo.git/': The requested URL returned error: 403 

Я еще не добавил аутентификацию, так в чем проблема?

Пожалуйста помоги. Мне нужно отказаться от мерзавца и вернуться к SVN, если это не сработает ...

0

1 ответ на вопрос

0
Nux

ХОРОШО. Это было так просто, как добавление аутентификации. Поскольку я хотел использовать аутентификацию LDAP (на основе Active Directory), я использовал следующее ... Обратите внимание, что ваши пути и пароли могут отличаться ;-)

/etc/gitweb.conf

our $projectroot = "/home/git"; 

/etc/httpd/conf.vhosts/httpd-vhosts.conf

<VirtualHost *:80> Include conf.vhosts/git.conf </VirtualHost> # if you want HTTPS <VirtualHost *:443> Include conf.vhosts/git.conf  SSLEngine on SSLCertificateFile "/var/www/certs/subdomains-cert.pem" SSLCertificateKeyFile "/var/www/certs/subdomains-key.pem" </VirtualHost> 

/etc/httpd/conf.vhosts/git.conf

# # Common # ServerAlias git.mol.com.pl  DocumentRoot /home/git SetEnv GITWEB_CONFIG /etc/gitweb.conf  <Directory /home/git> Order Allow,Deny Allow from all  Options +ExecCGI AddHandler cgi-script .cgi DirectoryIndex gitweb.cgi </Directory>  SetEnv GIT_PROJECT_ROOT /home/git SetEnv GIT_HTTP_EXPORT_ALL  AliasMatch ^/(.*/objects/[0-9a-f]/[0-9a-f])$ /home/git/$1 AliasMatch ^/(.*/objects/pack/pack-[0-9a-f].(pack|idx))$ /home/git/$1 ScriptAliasMatch \ "(?x)^/(.*/(HEAD | \ info/refs | \ objects/info/[^/]+ | \ git-(upload|receive)-pack))$" \ /usr/libexec/git-core/git-http-backend/$1  <Location /> AuthType Basic AuthBasicProvider ldap AuthBasicAuthoritative on AuthUserFile /dev/null AuthLDAPURL ldap://our.domain.server.com/CN=Users,DC=our,DC=domain,DC=server,DC=com?sAMAccountName AuthLDAPBindDN CN=someWindowsDomainUser,CN=Users,DC=our,DC=domain,DC=server,DC=com AuthLDAPBindPassword someWindowsDomainUserSecretPassword  Order Allow,Deny Allow from all </Location>  # # Test repo # <Location /test-repo.git> AuthName "Test-bare-repo"  require valid-user </Location>