2010-03-11 13 views
6

He intentado alojar un repositorio Mercurial HG utilizando un Scriptalias.Hosting Mercurial HG a través del servidor VisualSVN

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

Si voy a Chrome que muestra el contenido del archivo CGI. En IE, sin embargo, representa imágenes y enlaces que no se muestran. En cualquier caso, el repositorio que quiero mostrar no se muestra.

¿Alguien ha logrado que esto funcione con VisualSVN? ¿También funcionará esto si tengo autenticación de Windows y https?

+0

he tratando de resolver esto por dos días ahora !! Desearía tener una respuesta. –

+0

Debe usar una ruta absoluta para el último argumento de ScriptAlias. –

Respuesta

7

Aquí hay una configuración alternativa usando mod_wsgi (¡rápido!), Directorio de repositorio combinado, y puede administrar el acceso al nivel de depósito de Mercurial desde la GUI del servidor de VisualSVN.

Descargue mod_wsgi.so for Apache 2.2 Win32 y colóquelo en "C: \ Archivos de programa \ Servidor VisualSVN \ bin".

Copie hgwebdir.wsgi desde su instalación de Mercurial (directorio contrib) a "C: \ Archivos de programa \ Servidor VisualSVN \". Debe ser algo como esto:

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

Cree el archivo de configuración "C: \ Archivos de programa \ VisualSVN Server \ hgweb.config".

[paths] 
/= c:/Repositories/* 

pegue el siguiente en "C: \ Archivos de programa \ VisualSVN Server \ conf \ httpd-custom.conf". Debe ajustar los valores de Auth * en función de la sección de 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> 

crear un repositorio Mercurial:

hg init C:\Repositories\hgtest 

Ahora debería ser capaz de acceder/hg a través de su navegador, y gestionar la autorización nivel repositorio a través de la herramienta de VisualSVN Server.

+0

Creo que estoy muy cerca de conseguir que esto funcione, sin embargo, aparece un mensaje de error 'Se produjo una excepción al procesar la secuencia de comandos de WSGI mercurial' y "Archivo" mercurial \\ hgweb \\ hgwebdir_mod.pyc ", línea 103, en __call__ '. el último Mecurial 1.5.1 compilado contra Python 2.6? – dvkwong

+0

5 segundos después de publicar mi último comentario ¡Finalmente lo puse en funcionamiento! Carpeta Copied Templates en la carpeta de la biblioteca como en la respuesta anterior Pasos adicionales a seguir: 1. Extraiga las bibliotecas. zip en Mercurial instálelo en una carpeta llamada libraries. 2. Copie la carpeta Templates a la carpeta libraries. 3. Asegúrese de instalar Python 2.6. ¡Gracias! – dvkwong

+1

FYI: módulo mod_wsgi incluido en la distribución del servidor VisualSVN desde la versión 3.3.0 : https: //v isualsvn.com/server/changes/#v3.3.0 –

0

Puede ejecutar hgwebdir detrás de diferentes módulos de autenticación y https, siempre que su servidor web los maneje antes de que la variable REMOTE_USER se transfiera al CGI.

No sé visualsvn, pero su ScriptAlias ​​se parece mucho a Apache. ¿Necesita una línea AddHandler para .cgi?

+0

¿Se supone que esa línea AddHandler es todo lo que se necesita para ejecutar CGI en un servidor Apache normal? –

+0

En Apache puede autorizar la ejecución de archivos usando "ExecCGI", "AddHandler cgi-script .cgi" y "ScriptAlias". Yo uso los dos últimos. –

3

Suponiendo que tiene instalado y funcionando Python 2.6, estos son los pasos que tomé.

Obtenga "mod_cgi.so" creado para Apache 2.2 Win32 y colóquelo en "C: \ Archivos de programa \ VisualSVN Server \ bin".

pegue el siguiente en "C: \ Archivos de programa \ VisualSVN Server \ conf \ httpd-custom.conf"

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

Cree el directorio cgi-bin, "C: \ Archivos de programa \ VisualSVN Server \ cgi-bin ". Y coloque hgweb.cgi en él. Asegúrese de que tiene una apariencia similar a la siguiente:

#!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) 

crear un archivo llamado hgweb.config en el directorio cgi-bin.

[paths] 
/= c:/HgRepositories/* 

copiado "C: \ Archivos de programa \ Mercurial \ templates" a "C: \ Archivos de programa \ Mercurial \ Library \ templates".

Crea la carpeta "C: \ HgRepositories" y "hg init c: \ HgRepositories \ test".

Reinicie VisualSVN Server, abra el navegador, disfrute de su repositorio de Mercurial.

1

partir de la versión 1.6 de Mercurial, el guión ha hgwebdir.wsgi han unificado con el guión hgweb.wsgi. Dondequiera que hgwebdir.wsgi sea referido en estas instrucciones, puede sustituir el script hgweb.wsgi en su lugar.

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

Cuestiones relacionadas