2012-11-17 2 views
2

http/https를 통해 사용할 수있는 몇 가지 GIT 저장소를 준비하고 싶습니다. 나는 여기저기서 읽고 git-http-backend에 대해 알았고, 나는 자습서를 따라 갔고 모든 것이 작동하도록했습니다. 내 htpasswd 파일에 지정된 임시 저장소를 제공하는 저장소를 복제하고 (지금은 user1과 user2로 가정) 변경 사항을 다시 푸시 할 수 있습니다.ScriptAliasMatch를 사용할 때 .htaccess가 무시됩니다.

내 레포지는 /var/www/git이며, gitweb도 마찬가지입니다.

등/아파치/conf.d/git.conf :

SetEnv GIT_PROJECT_ROOT /var/www/git 
SetEnv GIT_HTTP_EXPORT_ALL 

ScriptAliasMatch \ 
    "(?x)^/git/(.*/(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 

ScriptAlias /git /var/www/git/gitweb.cgi 

<Location /git> 
    AuthType Basic 
    AuthName "Basic Auth" 
    AuthBasicProvider file ldap 

    # LDAP 
    AuthzLdapAuthoritative Off 
    AuthLDAPURL "ldap://[...]/CN=Users,DC=ad,DC=example,DC=com?sAMAccountName" 
    AuthLDAPBindDN "CN=Administrator,CN=Users,DC=ad,DC=example,DC=com" 
    AuthLDAPBindPassword Password11 

    # FILE 
    AuthUserFile /var/www/htpasswd 
    AuthGroupFile /var/www/git.groups 
    Require valid-user 
</Location> 

내가 설정을 시도하고 있는지

git clone http://localhost/git/gitrepo 
Username for 'http://localhost/git/gitrepo': user1 
Password for 'http://[email protected]': XXXXX 

문제와 저장소를 복제 저장소 기반 권한 부여, 나는 단지 사용자 그룹이 각 저장소에 액세스 할 수 있기를 원합니다. , 이론적으로

Require User test2 

: 나는 완벽한 솔루션 (서버를 다시 시작할 필요가 없습니다) 것 .htaccess 파일을 사용하여 생각, 그래서 난 내 저장소의 디렉토리는/var/www /에서 자식/gitrepo에서 간단한의 .htaccess를 넣어 test1을 사용하여 복제/푸싱 변경을 허용해서는 안되지만 여전히 작동 중입니다. .htaccess는 무시됩니다. 왜냐하면 내가 무엇을 넣었더라도 인증을 받으면 저장소를 복제 할 수 있기 때문입니다.

ScriptAliasMatch에 문제가있을 수 있습니다. 모든 처리는 git-http-backend exec로 이동하고 모든 트래픽을 리디렉션했기 때문에 Apache로 돌아 가지 않습니다. 나는 아파치에서 오히려 초보자 다. 그래서 그것은 간단한 이야기일지도 모른다. 그러나 제발 - 도와 줘라! :) 1

업데이트 : 예,에 AllowOverride는은/var/www /에서 자식에 대한 기본 설정에서 "모든"로 설정됩니다

당신은/var/www /에서 자식 디렉토리가 외부에
<Directory "/var/www/git"> 
    AllowOverride All 
</Directory> 
+0

여기에서 할 수있는 것이 있다면 (나는 메일 링리스트에 가입 할 것 같네요),하지만 저는 Gitolite로 바꿨다고 말하고 싶었습니다. –

답변

0

정상적인 웹 문서 트리. 그것은 좋은 일이지만 실제로는 .htaccess 파일이 읽히지 않기 때문에 git-http-backend 만 이 웹 서버가 아니라이 디렉토리에 실제로 액세스한다는 것을 의미합니다.

서버 conf 영역에 인증이 필요하므로 은 URL을 인증하거나 git-http-backend 프로그램이있는 래퍼로 인증합니다.

하나의 서버에 여러 개의 GIT 저장소가있을 수 있지만 문서 작성 방법은 매우 적습니다.

관련 문제