2010-03-11 13 views
6

Ho provato ad ospitare un repository Mercurial HG utilizzando uno Scriptalias.Hosting Mercurial HG tramite VisualSVN Server

ScriptAlias ​​/ hg/"htdocs/hgwebdir.cgi"

Se vado a Chrome si visualizzare il contenuto del file cgi. In IE esegue il rendering, tuttavia le immagini e i collegamenti non vengono visualizzati. In entrambi i casi il repository che voglio visualizzare non è mostrato.

Qualcuno è riuscito a farlo funzionare con VisualSVN? Funzionerà anche se ho l'autenticazione di Windows e https?

+0

ho cercando di capire questo fuori da due giorni !! Vorrei avere una risposta. –

+0

È necessario utilizzare un percorso assoluto per l'ultimo argomento di ScriptAlias. –

risposta

7

Ecco una configurazione alternativa che utilizza mod_wsgi (veloce!), Directory di repository combinata ed è possibile gestire l'accesso a livello di repository Mercurial dalla GUI di VisualSVN Server.

Download mod_wsgi.so for Apache 2.2 Win32 e posto in "C: \ Programmi \ VisualSVN Server \ bin".

Copia hgwebdir.wsgi dall'installazione Mercurial (directory contrib) in "C: \ Programmi \ VisualSVN Server \". Esso dovrebbe essere simile a questo:

import sys 
sys.path.insert(0, "C:\Program Files\Mercurial\library") 
from mercurial.hgweb.hgwebdir_mod import hgwebdir 
application = hgwebdir('hgweb.config') 

Creare il file di configurazione "C: \ Program Files \ VisualSVN Server \ hgweb.config".

[paths] 
/= c:/Repositories/* 

Incollare il seguente in "C: \ Program Files \ VisualSVN Server \ conf \ httpd-custom.conf". È necessario regolare i valori Auth * in base alla sezione di httpd.conf.

LoadModule wsgi_module bin/mod_wsgi.so 
WSGIScriptAlias /hg "hgwebdir.wsgi" 

<Location /hg/> 
    AuthName "Mercurial Repositories" 
    AuthType VisualSVN 
    AuthzVisualSVNAccessFile "C:/Repositories/authz-windows" 
    AuthnVisualSVNBasic on 
    AuthnVisualSVNIntegrated off 
    AuthnVisualSVNUPN Off 

    SVNParentPath "C:/Repositories/" 

    require valid-user 
</Location> 

creare un repository Mercurial:

hg init C:\Repositories\hgtest 

si dovrebbe ora essere in grado di accedere a/hg tramite il browser, e gestire l'autorizzazione di livello repository tramite lo strumento VisualSVN Server.

+0

Penso di essere molto vicino a farlo funzionare, tuttavia sto ricevendo un errore "Eccezione si è verificato durante l'elaborazione di script WSGI mercurial" e "File" mercurial \\ hgweb \\ hgwebdir_mod.pyc ", riga 103, in __call__". ultimo Mecurial 1.5.1 compilato contro Python 2.6? – dvkwong

+0

5 secondi dopo aver postato il mio ultimo commento Finalmente ho funzionato! Copiato cartella Templates nella cartella della libreria come da risposta precedente Ulteriori passaggi da seguire: 1. Estrarre le librerie. zip in Installazione di Mercurial in una cartella denominata librerie 2. Copia cartella Modelli nella cartella librerie 3. Assicurati di installare Python 2.6 Grazie! – dvkwong

+1

FYI: modulo mod_wsgi incluso nella distribuzione VisualSVN Server dalla versione 3.3.0 : https: //www.v isualsvn.com/server/changes/#v3.3.0 –

0

È possibile eseguire hgwebdir dietro moduli di autenticazione e https diversi, a condizione che il server Web li gestisca prima che la variabile REMOTE_USER venga trasferita al CGI.

Non conosco visualsvn, ma il tuo ScriptAlias ​​assomiglia molto ad Apache. Hai bisogno di una linea AddHandler per .cgi?

+0

Questa riga AddHandler dovrebbe essere tutto ciò che è necessario per eseguire CGI su un normale server Apache? –

+0

In Apache puoi autorizzare l'esecuzione di file usando "ExecCGI", "AddHandler cgi-script .cgi" e "ScriptAlias". Io uso i due successivi. –

3

Supponendo di avere installato e funzionante Python 2.6, ecco i passaggi che ho seguito.

Ottenere "mod_cgi.so" creato per Apache 2.2 Win32 e inserirlo in "C: \ Programmi \ VisualSVN Server \ bin".

Incollare il seguente in "C: \ Program Files \ VisualSVN Server \ conf \ httpd-custom.conf"

LoadModule cgi_module bin/mod_cgi.so 
ScriptAliasMatch ^/hg(.*) "cgi-bin/hgweb.cgi$1" 

Creare la cartella cgi-bin, "C: \ Program Files \ VisualSVN Server \ cgi-bin". E inserire hgweb.cgi in esso. Assicurarsi che sembra simile al seguente:

#!c:/Python26/python.exe -u 

import sys 
sys.path.insert(0, "C:\Program Files\Mercurial\library") 

import cgitb 
cgitb.enable() 

from mercurial.hgweb.hgwebdir_mod import hgwebdir 
import mercurial.hgweb.wsgicgi as wsgicgi 

application = hgwebdir('hgweb.config') 
wsgicgi.launch(application) 

Creare un file chiamato hgweb.config nella cartella cgi-bin.

[paths] 
/= c:/HgRepositories/* 

Copiato "C: \ Programmi \ Mercurial \ templates" a "C: \ Programmi \ Mercurial \ biblioteca \ templates".

Creare la cartella "C: \ HgRepositories" e "hg init c: \ HgRepositories \ test".

Riavvia VisualSVN Server, apri il browser, goditi il ​​tuo repository Mercurial.

1

A partire dalla versione 1.6 di Mercurial, lo script è hgwebdir.wsgi stato unificato con lo script hgweb.wsgi. Laddove hgwebdir.wsgi è a cui si fa riferimento in queste istruzioni, è possibile sostituire lo script hgweb.wsgi .

https://www.mercurial-scm.org/wiki/modwsgi

Problemi correlati