GIT SVN com subgit e apache

2

Comecei a avaliar um software chamado subgit que permite a interface de um repositório com SVN ou GIT.

Em toda a nossa organização, fazemos a interface de nossos repositórios usando o apache, e tentar combinar isso com o GIT se torna um pouco problemático.

Em geral, queremos permitir o acesso de leitura sem autenticação, e a gravação deve ser autenticada, isso funciona bem com o SVN, mas não parece ser tão direto com o GIT.

Além disso, seria ótimo ter o apache identificando se é uma solicitação GIT / SVN e descobrir onde apontar o cliente para que você possa usar o mesmo URL, independentemente do sistema de repo que estiver usando. / p>

Abaixo está a configuração, agora temos acesso de leitura adequado sem autenticação para svn e acesso de gravação com auth, mas para o GIT é r / w sem autenticação.

<VirtualHost *:80>
DocumentRoot /home/subgit/public_html
CustomLog /home/subgit/logs/access_log combined
SetEnv GIT_PROJECT_ROOT /home/subgit/repos/repo/
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER $REDIRECT_REMOTE_USER
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
<LocationMatch "^/git/.*/git-receive-pack$">
  Options +ExecCGI
AuthType Basic
AuthName "subgit"
AuthBasicProvider file
AuthUserFile /home/subgit/etc/subgit
Require valid-user
  Allow From All
</LocationMatch>
<LocationMatch "/svn">
  DAV svn
  SvnPath /home/subgit/repos/repo
AuthType Basic
AuthName "subgit"
AuthBasicProvider file
AuthUserFile /home/subgit/etc/subgit
  AuthzSVNAccessFile /home/subgit/etc/subgit.access
      <LimitExcept GET PROPFIND OPTIONS REPORT>
          Require valid-user
      </LimitExcept>
</LocationMatch>
</VirtualHost>

Qualquer entrada será apreciada!

    
por user2108948 26.02.2013 / 15:38

2 respostas

1

Soo eu realmente consegui consertar isso sozinho:

<VirtualHost *:80>
DocumentRoot /home/subgit/repos

    <Directory /home/subgit/repos>
        Options       None
        AllowOverride none
        Order         allow,deny
        Allow         from all
    </Directory>

CustomLog /home/subgit/logs/access_log combined
SuexecUserGroup subgit subgit
ScriptAlias /git/ /home/subgit/bin/gitolite-suexec-wrapper.sh/
RewriteEngine On
RewriteCond %{QUERY_STRING} service=git-receive-pack [OR,NC]
RewriteCond %{REQUEST_URI} ^/git/.*/git-receive-pack$ [NC]
RewriteRule .* - [E=AUTHREQUIRED:yes]

 <LocationMatch "/git/">
    Order Allow,Deny
    Deny from env=AUTHREQUIRED
    Allow from all
    Satisfy Any
    AuthType Basic
    AuthName "subgit"
    AuthBasicProvider file
    AuthUserFile /home/subgit/etc/subgit
    Require valid-user
  </LocationMatch>
  <LocationMatch "/svn">
    DAV svn
    SvnPath /home/subgit/repos/testrepo
    AuthType Basic
    AuthName "subgit"
    AuthBasicProvider file
    AuthUserFile /home/subgit/etc/subgit
    AuthzSVNAccessFile /home/subgit/etc/subgit.access
    <LimitExcept GET PROPFIND OPTIONS REPORT>
      Require valid-user
    </LimitExcept>
  </LocationMatch>
</VirtualHost>

No que diz respeito aos comentários sobre integração contínua, não, não é perfeito, mas é muito bom e bom o suficiente para o propósito.

    
por 27.02.2013 / 21:09
-1

"Integração perfeita entre SVN e git" é impossível, os modelos subjacentes são muito diferentes. Veja a documentação de git svn para uma lista longa de coisas que são naturais no mundo git que não pode ser feito no SVN. É melhor pensar em migrar do SVN (o git svn mencionado funciona bem para derrubar um repositório SVN, mas fazer isso é lento como melaço; pode manter o original para backup e trabalhar com git a partir de agora).

    
por 26.02.2013 / 16:50