2010-05-19 16 views
10

Tenga en cuenta que esto podría ser el más adecuado en serverfault.com, pero como se trata de alojar un repositorio de código fuente de programador, no estoy del todo seguro. Publicaré aquí primero, confiando en que se migrará si es necesario.Hosting Mercurial en IIS7

Estoy intentando alojar clones de mis repositorios Mercurial en mi propio servidor (tengo el repositorio principal en otro lugar), y estoy intentando configurar Mercurial en IIS.

Seguí la guía here , pero aparece un mensaje de error .

Resuelto: Ver la parte inferior de esta pregunta para más detalles.

El mensaje de error es:

mercurial.error.RepoError: repository /path/to/repo/or/config not found

Aquí es lo que hice.

  1. He instalado Mercurial 1.5.2
  2. creé c: \ inetpub \ hg
  3. he descargado la fuente hg según las instrucciones de la página web, y copié el archivo hgweb.cgi en c: \ inetpub \ Hg (nota, la página web dice hgwebdir.cgi, pero no existe este archivo en particular, hgweb.cgi significa, sin embargo, puede ser este el origen del problema?)
  4. he añadido un hgweb.config, con la siguiente contenido:

    [paths] 
    repo1 = C:/hg/** 
    [web] 
    style = monoblue 
    
  5. creé c: \ hg, crearon una prueba de subdirectorio, y creó un repositorio en su interior

  6. he instalado Python 2.6.5, la última versión 2.6 de la página web (la página web menciona que necesito instale la versión correcta o recibiré un mensaje de error específico, ya que no aparece un mensaje de error que se parece remotamente al mencionado, supongo que 2.6.5 no es el problema)
  7. Agregué un nuevo virtual host hg.vkarlsen.no, apuntándolo a c: \ inetpub \ hg
  8. Para este host, agregué una asignación de scripts en la sección Asignaciones de manejadores, mapeo * .cgi a c:\python26\python.exe -u %s %s según las instrucciones en el sitio web.

Luego lo probé navegando al http://hg.vkarlsen.no/hgweb.cgi, pero aparece un mensaje de error.

Para que sea más fácil para poner a prueba, se me cayó a un símbolo del sistema, navegado en c: \ inetpub \ hg y ejecuta el siguiente comando (mensaje de error es parte del texto a continuación):

C:\inetpub\hg>c:\python26\python.exe -u hgweb.cgi 
Traceback (most recent call last): 
    File "hgweb.cgi", line 16, in <module> 
    application = hgweb(config) 
    File "mercurial\hgweb\__init__.pyc", line 12, in hgweb 

    File "mercurial\hgweb\hgweb_mod.pyc", line 30, in __init__ 

    File "mercurial\hg.pyc", line 82, in repository 

    File "mercurial\localrepo.pyc", line 2221, in instance 

    File "mercurial\localrepo.pyc", line 62, in __init__ 

mercurial.error.RepoError: repository /path/to/repo/or/config not found 

¿Alguien sabe lo que necesito ver para arreglar esto?


Editar: Ok, creo que me las arreglé para conseguir un paso más cerca de la solución, pero todavía estoy perplejo.

Realicé el.cgi archivo es un archivo de script en Python, y no algo de compilación, así que la abrió para la edición, y estas líneas estaba sentado en él:

# Path to repo or hgweb config to serve (see 'hg help hgweb') 
config = "/path/to/repo/or/config" 

Así que este era mi fuente para el mensaje de error específico.

Si cambio de la línea a esto:

config = "c:\\hg\\test" 

Entonces puede navegar el repositorio vacío a través de la interfaz web de Mercurial.

Sin embargo, quiero alojar múltiples repositorios, y ya que la línea dice que yo también puedo enlazar a un archivo hgweb config, he intentado esto:

config = "c:\\inetpub\\hg\\hgweb.config" 

Pero entonces me sale el siguiente mensaje de error:

mercurial.error.Abort: c:\inetpub\hg\hgweb.config: not a Mercurial bundle file 
Exception ImportError: 'No module named shutil' in <bound method bundlerepository.__del__ 
of <mercurial.bundlerepo.bundlerepository object at 0x0260A110>> ignored 

Nada de lo que he probado para la variable de configuración parece funcionar:

config = "hgweb.config" 
config = "c:\\hg\\hgweb.config" 
  • Varias otras variaciones que no recuerdo.

Entonces, todavía perplejo, ¿alguien apunta?

Afortunadamente esta pregunta dará a otros información si están perplejos como yo.

+1

Puede responderse a sí mismo y aceptar su respuesta, por lo que la pregunta no aparece como sin respuesta. – tonfa

+0

Gracias por el recordatorio. –

Respuesta

7

terminé tener que editar el archivo hgweb.cgi:

from: from mercurial.hgweb import hgweb, wsgicgi 
     application = hgweb(config) 

to: from mercurial.hgweb import hgweb, hgwebdir, wsgicgi 
     application = hgwebdir(config) 

Nota hgwebdir las partes añadidas allí. Aquí está mi archivo hgweb.config, que se encuentra en el mismo directorio que el archivo hgweb.cgi:

[collections] 
C:/hg/ = C:/hg/ 

[web] 
style = gitweb 

Esto sirve ahora mis repositorios éxito.