Problem:
19/06/10 Update: Weitere Beweise Problem ist Server-Seite. Beim Empfang dieser Fehler auf Windows 7 Befehlszeilen (siehe unten für die vollständige Rückverfolgung):Mercurial-Clientfehler 255 und HTTP-Fehler 404 beim Versuch, große Dateien an den Server zu senden
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
Beim Versuch, eine changeset zu schieben, die 6 große Dateien (.exe, .dmg, usw.) zu meinem Remote-Server meines Klienten (MacHG) meldet den Fehler:
"Error During Push. Mercurial reported error number 255: abort: HTTP Error 404: Not Found"
Was bedeutet der Fehler überhaupt ?! Das Einzige, was ich an diesem Commit erkennen kann, ist die Größe, der Typ und der Dateiname der Dateien. Wie kann ich feststellen, welche Datei innerhalb des Änderungssatzes fehlerhaft ist? Wie kann ich das beschädigte Änderungsset aus dem Repository löschen? In einem anderen Beitrag berichtete jemand, dass er "mq" -Erweiterungen verwendet, um ein fehlerhaftes Changeset effektiv aus dem Verlauf in einem Repository zu löschen, aber mq sieht zu kompliziert aus für das, was ich zu lösen versuche.
Hintergrund:
ich drücken kann und ziehen Sie die folgenden Schritte aus: Quelldateien, Verzeichnisse, Dateien und .class- eine .jar-Datei zu und von dem Server, die beide MacHG und toirtoise HG verwenden.
Ich habe erfolgreich zu meinem lokalen Repository die Ergänzung zum ersten Mal die 6 großen .exe, .dmg etc Installer-Dateien (ca. 130 MB insgesamt) verpflichtet.
Im folgenden Commit zu meinem lokalen Repository habe ich die 6 Dateien, die das Problem verursacht haben, entfernt ("untracked"/vergessen), aber das vorherige (fehlerhafte) Changeset ist immer noch in der Warteschlange zum Server (dh meinem lokalen Host) versucht, das "Hinzufügen" und dann das "Entfernen" auf den Remote-Server zu schieben - und mit der Philosophie "Behalte alles in der Geschichte" des Quellcodeverwaltungssystems übereinzustimmen.
Ich kann .txt .java Dateien usw. mit TortoiseHG von Windows-PCs committen. Ich habe nicht wirklich getestet, die gleichen großen Dateien mit TortoiseHG zu committen oder zu schieben.
Bitte helfen!
Setup:
Client-Anwendungen = MacHG v0.9.7 (SCM 1.5.4) und TortoiseHG v1.0.4 (SCM 1.5.4)
Server = HTTPS, IIS7.5, Mercurial 1.5.4, Python 2.6.5, Setup diese Anweisungen mit:
http://www.jeremyskinner.co.uk/mercurial-on-iis7/
In IIS7.5 die CGI-Handler alle Verben zu handhaben ist so konfiguriert, (nicht nur GET, POST und HEAD).
Meine hgweb.cgi Datei auf dem Server ist wie folgt:
#!/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)
Mein hgweb.config-Datei auf dem Server ist wie folgt:
[collections]
C:\Mercurial Repositories = C:\Mercurial Repositories
[web]
baseurl = /hg
allow_push = usernamea
allow_push = usernameb
Ausgabe von der Kommandozeile aus meinem macbook (beide Mercurial und MacHG installiert) mit -v und --trackback Fahnen:
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$
Ausgabe von Windows- 7 Host (hat nur TortoiseHG installiert ist) versucht die gleichen Dateien zu dem Server zu schieben (unterschiedliche changset, aber enthält die gleichen 6 Datei Additionen als changeset vom macbook geschoben)
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 ist ein Keep-Alive-Problem? Ist IIS7.5 fehlerhaft? Python 2.6.5 bei Fehler?
Eine weitere Quelle von Informationen ist, von der Kommandozeile aus zu laufen und die Flags -v und --traceback zu übergeben: hg -v - traceback push –