file mercurial push iis-7.5 machg

file - Error de cliente mercurial 255 y error HTTP 404 al intentar enviar archivos grandes al servidor



push iis-7.5 (4)

Ok, tu solución lo hizo!
Ya tenía una etiqueta requestLimits como esta:
<requestLimits maxUrl="16384" maxQueryString="65536" />
así que agregué maxAllowedContentLength = "524288000" de esta manera:
<requestLimits maxUrl="16384" maxQueryString="65536" maxAllowedContentLength ="524288000" />
¡Y eso lo hizo!

Problema:

19/06/10 Actualización: Más problema de evidencia es del lado del servidor. Recibiendo este error en la línea de comando de Windows 7 (ver más abajo para un seguimiento completo):

URLError: <urlopen error [Errno 10054] An existing connection was forcibly closed by the remote host> abort: error: An existing connection was forcibly closed by the remote host

Al intentar enviar un conjunto de cambios que contiene 6 archivos grandes (.exe, .dmg, etc.) a mi servidor remoto, mi cliente (MacHG) está informando el error:

"Error durante el envío. Mercurial informó el error número 255: anular: HTTP Error 404: No encontrado"

¡¿Qué significa el error ?! Lo único único (que puedo decir) sobre este compromiso es el tamaño, el tipo y los nombres de archivo de los archivos. ¿Cómo puedo determinar qué archivo exacto dentro del conjunto de cambios está fallando? ¿Cómo puedo eliminar el conjunto de cambios corruptos del repositorio? En una publicación diferente, alguien informó que usó las extensiones "mq" para eliminar efectivamente un conjunto de cambios erróneo del historial dentro de un repositorio, pero mq parece demasiado complicado para lo que estoy tratando de resolver.

Fondo:

Puedo empujar y tirar de lo siguiente: archivos de origen, directorios, archivos .class y un archivo .jar desde y hacia el servidor, utilizando tanto MacHG como toirtoise HG.

Me comprometí con éxito a mi repositorio local con la adición por primera vez de los 6 archivos de instalación grandes .exe, .dmg, etc. (aproximadamente 130Mb en total).

En la siguiente confirmación de mi repositorio local, eliminé ("sin seguimiento" / olvido) los 6 archivos que causan el problema; sin embargo, el conjunto de cambios anterior (que falla) aún está en cola para ser enviado al servidor (es decir, mi host local está tratando de enviar) el "agregar" y luego el "quitar" al servidor remoto, y mantenerse alineado con la filosofía de "mantener todo en la historia" del sistema de control de fuente).

Puedo enviar archivos .txt, .java, etc. utilizando TortoiseHG desde PC con Windows. En realidad, no he probado probar o enviar los mismos archivos grandes con TortoiseHG.

¡Por favor ayuda!

Preparar:

Aplicaciones cliente = MacHG v0.9.7 (SCM 1.5.4) y TortoiseHG v1.0.4 (SCM 1.5.4)

Servidor = HTTPS, IIS7.5, Mercurial 1.5.4, Python 2.6.5, configura usando estas instrucciones:

http://www.jeremyskinner.co.uk/mercurial-on-iis7/

En IIS7.5, el controlador CGI está configurado para manejar TODOS los verbos (no solo GET, POST y HEAD).

Mi archivo hgweb.cgi en el servidor es el siguiente:

#!/usr/bin/env python # # An example hgweb CGI script, edit as necessary # Path to repo or hgweb config to serve (see ''hg help hgweb'') #config = "/path/to/repo/or/config" # Uncomment and adjust if Mercurial is not installed system-wide: #import sys; sys.path.insert(0, "/path/to/python/lib") # Uncomment to send python tracebacks to the browser if an error occurs: #import cgitb; cgitb.enable() from mercurial import demandimport; demandimport.enable() from mercurial.hgweb import hgweb, wsgicgi application = hgweb(''C:/inetpub/wwwroot/hg/hgweb.config'') wsgicgi.launch(application)

Mi archivo hgweb.config en el servidor es el siguiente:

[collections] C:/Mercurial Repositories = C:/Mercurial Repositories [web] baseurl = /hg allow_push = usernamea allow_push = usernameb

Salida desde la línea de comandos desde mi macbook (tanto Mercurial como MacHG instalado) usando los indicadores -v y --trackback:

macbook15:hgrepos coderunner$ hg -v --traceback push pushing to https://coderunner:***@hg.mydomain.com.au/hg/hgrepos searching for changes 3 changesets found Traceback (most recent call last): File "/Library/Python/2.6/site-packages/mercurial/dispatch.py", line 50, in _runcatch return _dispatch(ui, args) File "/Library/Python/2.6/site-packages/mercurial/dispatch.py", line 471, in _dispatch return runcommand(lui, repo, cmd, fullargs, ui, options, d) File "/Library/Python/2.6/site-packages/mercurial/dispatch.py", line 341, in runcommand ret = _runcommand(ui, options, cmd, d) File "/Library/Python/2.6/site-packages/mercurial/dispatch.py", line 522, in _runcommand return checkargs() File "/Library/Python/2.6/site-packages/mercurial/dispatch.py", line 476, in checkargs return cmdfunc() File "/Library/Python/2.6/site-packages/mercurial/dispatch.py", line 470, in <lambda> d = lambda: util.checksignature(func)(ui, *args, **cmdoptions) File "/Library/Python/2.6/site-packages/mercurial/util.py", line 401, in check return func(*args, **kwargs) File "/Library/Python/2.6/site-packages/mercurial/commands.py", line 2462, in push r = repo.push(other, opts.get(''force''), revs=revs) File "/Library/Python/2.6/site-packages/mercurial/localrepo.py", line 1491, in push return self.push_unbundle(remote, force, revs) File "/Library/Python/2.6/site-packages/mercurial/localrepo.py", line 1636, in push_unbundle return remote.unbundle(cg, remote_heads, ''push'') File "/Library/Python/2.6/site-packages/mercurial/httprepo.py", line 235, in unbundle heads='' ''.join(map(hex, heads))) File "/Library/Python/2.6/site-packages/mercurial/httprepo.py", line 134, in do_read fp = self.do_cmd(cmd, **args) File "/Library/Python/2.6/site-packages/mercurial/httprepo.py", line 85, in do_cmd resp = self.urlopener.open(req) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib2.py", line 389, in open response = meth(req, response) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib2.py", line 502, in http_response ''http'', request, response, code, msg, hdrs) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib2.py", line 427, in error return self._call_chain(*args) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib2.py", line 361, in _call_chain result = func(*args) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib2.py", line 510, in http_error_default raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) HTTPError: HTTP Error 404: Not Found abort: HTTP Error 404: Not Found macbook15:hgrepos coderunner$

Salida desde el host de Windows 7 (solo tiene instalado TortoiseHG) que intenta enviar los mismos archivos al servidor (diferente changset, pero contiene las mismas 6 adiciones de archivos que el conjunto de cambios que se está enviando desde el macbook)

c:/repositories/hgrepos>hg -v --traceback push pushing to https://coderunner:***@hg.mydomain.com.au/hg/hgrepos searching for changes 1 changesets found Traceback (most recent call last): File "mercurial/dispatch.pyo", line 50, in _runcatch File "mercurial/dispatch.pyo", line 471, in _dispatch File "mercurial/dispatch.pyo", line 341, in runcommand File "mercurial/dispatch.pyo", line 522, in _runcommand File "mercurial/dispatch.pyo", line 476, in checkargs File "mercurial/dispatch.pyo", line 470, in <lambda> File "mercurial/util.pyo", line 401, in check File "mercurial/commands.pyo", line 2462, in push File "mercurial/localrepo.pyo", line 1491, in push File "mercurial/localrepo.pyo", line 1636, in push_unbundle File "mercurial/httprepo.pyo", line 235, in unbundle File "mercurial/httprepo.pyo", line 134, in do_read File "mercurial/httprepo.pyo", line 85, in do_cmd File "urllib2.pyo", line 389, in open File "urllib2.pyo", line 407, in _open File "urllib2.pyo", line 367, in _call_chain File "mercurial/url.pyo", line 523, in https_open File "mercurial/keepalive.pyo", line 259, in do_open URLError: <urlopen error [Errno 10054] An existing connection was forcibly closed by the remote host> abort: error: An existing connection was forcibly closed by the remote host c:/repositories/hgrepos>

Es un problema para mantenerse vivo? ¿Es IIS7.5 culpa? Python 2.6.5 en la falla?


Pasó por los mismos puntos de dolor ...

Con la configuración predeterminada en el servidor IIS, no podrá enviar repositorios grandes al servidor, ya que IIS tiene una longitud de solicitud máxima predeterminada de solo 4 MB, y un tiempo de espera para scripts CGI de 15 min, lo que hace imposible cargar archivos de gran tamaño. Para habilitar la carga de archivos grandes (y esto no es fácil de encontrar en la web ...), haga lo siguiente:
1. En el Administrador de IIS, haga clic en el nodo del sitio web y haga clic en el enlace Límites….
2. Luego especifique un tiempo de espera de conexión suficientemente grande (elegí 1 hora aquí, o 3600 segundos)
3. A continuación, haga clic en el nodo que contiene hg (según el procedimiento de instalación), luego haga doble clic en CGI
4. Especifique un tiempo de espera suficientemente largo para los scripts CGI (por ejemplo, 10 horas)

Ahora, edite C: / inetpub / wwwroot / hg / web.config, para que tenga una nueva sección <security> en <system.webserver> , y una <httpRuntime> en <system.web> :

<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> […] <security> <requestFiltering> <requestLimits maxAllowedContentLength ="2147482624" /> </requestFiltering> </security> </system.webServer> <system.web> <httpRuntime executionTimeout="540000" maxRequestLength="2097151"/> </system.web> </configuration>

Esto especifica un tiempo de espera de http de poco más de 6 días y un límite de carga máximo de aproximadamente 2 GB.


Solo publico esto para cualquier otra persona que entre en este hilo desde una búsqueda.

Actualmente hay un problema con la extensión de archivos grandes en el módulo mercurial python cuando se hospeda a través de IIS. Consulte esta publicación si tiene problemas para enviar grandes conjuntos de cambios (o archivos grandes) a IIS a través de TortoiseHg.

El problema, en definitiva, resulta ser un error en el procesamiento de SSL introducido en Python 2.7.3 (probablemente explica por qué hay tantas publicaciones no resueltas de personas que buscan problemas con Mercurial). Al volver a Python 2.7.2, permítame ir un poco más adelante (bloqueado a 30 MB de empuje en lugar de 15 Mb), pero para resolver adecuadamente el problema, tuve que instalar la utilidad IISCrypto para deshabilitar completamente las transferencias sobre SSLv2.


Tuvo el mismo problema al usar IIS 7 como servidor. Probé la solución por encima de la cual se resolvió el error 255, pero se obtuvo Errorno 10054 con archivos más grandes. Luego aumenté el Tiempo de espera de conexión en IIS, que funcionó.

Para cambiar: Sitio web -> Administrar sitio web -> Configuración avanzada -> Límites de conexión -> Tiempo de espera de conexión. El valor predeterminado es 2 minutos. Cambié la mía a 20 minutos y funcionó.

No estoy seguro de por qué funciona, pero parece que Mercurial hace una conexión con el servidor, tarda un poco en procesar archivos más grandes y luego solo envía una solicitud. En ese momento IIS ha desconectado al cliente.