Problema:
19/06/10 Actualización: hay más problemas de evidencia en el servidor. Recibir este error en la línea de comandos de Windows 7 (ver más abajo para la plena rastreo):Mercurial cliente error 255 y HTTP error 404 al intentar enviar archivos de gran tamaño al servidor
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 empujar un conjunto de cambios que contiene 6 archivos de gran tamaño (.exe, .dmg, etc) a mi servidor remoto a mi cliente (MacHG) informa el error:
"Error During Push. Mercurial reported error number 255: abort: HTTP Error 404: Not Found"
¿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 reportó usar extensiones "mq" para eliminar de manera efectiva un conjunto de cambios erróneos del historial dentro de un repositorio, pero mq parece demasiado complicado para lo que estoy tratando de resolver.
Antecedentes:
puedo empujar y tirar lo siguiente: archivos de origen, directorios, archivos .class y un archivo .jar hacia y desde el servidor, utilizando tanto MachG y toirtoise HG.
Me he comprometido con éxito en mi repositorio local, añadiendo por primera vez los 6 archivos de instalador de .exe, .dmg, etc. (aproximadamente 130 MB en total).
En el siguiente commit a mi repositorio local, eliminé ("untracked"/forget) los 6 archivos que causan el problema, sin embargo el conjunto de cambios anterior (fallido) todavía está en cola para ser enviado al servidor (es decir, mi host local está intentando presionar "agregar" y luego "eliminar" al servidor remoto, y mantenerse alineado con la filosofía "mantener todo en la historia" del sistema de control de origen).
Puedo enviar archivos .txt .java, etc. utilizando TortoiseHG desde PC con Windows. En realidad, no he probado la confirmación o el envío de los mismos archivos de gran tamaño con TortoiseHG.
Por favor ayuda!
Configuración:
Las aplicaciones de cliente = MachG v0.9.7 (SCM 1.5.4), y v1.0.4 TortoiseHG (SCM 1.5.4)
Servidor = HTTPS, IIS7.5, Mercurial 1.5.4, Python 2.6.5, configuración mediante estas instrucciones:
http://www.jeremyskinner.co.uk/mercurial-on-iis7/
En IIS7.5 el controlador CGI está configurado para gestionar todos los verbos (no sólo GET, POST y HEAD).
Mi archivo hgweb.cgi en el servidor es la 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 hgweb.archivo de configuración en el servidor es la siguiente:
[collections]
C:\Mercurial Repositories = C:\Mercurial Repositories
[web]
baseurl = /hg
allow_push = usernamea
allow_push = usernameb
salida de la línea de comandos de mi macbook (tanto Mercurial y MachG instalados) usando -v y banderas --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 Windows 7 host (sólo ha instalado TortoiseHG) intentar empujar los mismos archivos en el servidor (diferente changset, pero contiene los mismos 6 adiciones de archivo como el conjunto de cambios siendo empujados 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? ¿IIS7.5 tiene la culpa? Python 2.6.5 en la falla?
Otra fuente de información es ejecutar desde la línea de comandos y pase el -v y banderas --traceback: hg -v --traceback empujar –