Sự cố:
19/06/10 Cập nhật: Thêm bằng chứng là phía máy chủ. Nhận lỗi này trên Windows 7 dòng lệnh (xem dưới đây để biết traceback đầy đủ):Lỗi khách hàng Mercurial 255 và lỗi HTTP 404 khi cố gắng đẩy tệp lớn đến máy chủ
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
Khi cố gắng để đẩy một changeset có chứa 6 tập tin lớn (.exe, .dmg, vv) đến máy chủ từ xa của tôi khách hàng của tôi (MacHG) đang báo cáo lỗi:
"Error During Push. Mercurial reported error number 255: abort: HTTP Error 404: Not Found"
Lỗi này có nghĩa là gì ?! Điều duy nhất duy nhất (mà tôi có thể nói) về cam kết này là kích thước, loại và tên tệp của các tệp. Làm thế nào tôi có thể xác định tập tin chính xác trong changeset là không? Làm thế nào tôi có thể xóa các changeset bị hỏng từ kho lưu trữ? Trong một bài đăng khác, ai đó đã báo cáo bằng cách sử dụng phần mở rộng "mq" để xóa một changeset có hiệu quả khỏi lịch sử trong một kho lưu trữ, nhưng mq trông quá phức tạp đối với những gì tôi đang cố gắng giải quyết.
Bối cảnh:
tôi có thể đẩy và kéo như sau: file nguồn, thư mục, file .class và một file .jar đến và đi từ máy chủ, sử dụng cả hai MacHG và toirtoise HG.
Tôi đã cam kết thành công với kho lưu trữ cục bộ của mình lần đầu tiên 6 tệp cài đặt lớn .exe, .dmg v.v. (tổng số khoảng 130Mb).
Trong cam kết sau đây với kho lưu trữ cục bộ của mình, tôi đã xóa ("untracked"/forget) 6 tệp gây ra sự cố, tuy nhiên các thay đổi trước đó (không) vẫn được xếp hàng để được đẩy tới máy chủ (tức là máy chủ cục bộ của tôi) đang cố gắng đẩy "thêm" và sau đó "loại bỏ" đến máy chủ từ xa - và giữ liên kết với triết lý "giữ mọi thứ trong lịch sử" của hệ thống kiểm soát nguồn).
Tôi có thể cam kết tệp .txt .java, v.v. sử dụng TortoiseHG từ máy tính Windows. Tôi đã không thực sự thử nghiệm cam kết hoặc đẩy các tập tin lớn bằng cách sử dụng TortoiseHG.
Vui lòng trợ giúp!
Setup:
Khách hàng ứng dụng = MacHG v0.9.7 (SCM 1.5.4), và TortoiseHG v1.0.4 (SCM 1.5.4)
Server = HTTPS, IIS7.5, Mercurial 1.5.4, Python 2.6.5, cài đặt sử dụng những hướng dẫn này:
http://www.jeremyskinner.co.uk/mercurial-on-iis7/
Trong IIS7.5 xử lý CGI được cấu hình để xử lý tất cả các động từ (không chỉ là GET, POST và HEAD).
tập tin hgweb.cgi của tôi trên máy chủ như sau:
#!/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)
hgweb My.tập tin cấu hình trên máy chủ như sau:
[collections]
C:\Mercurial Repositories = C:\Mercurial Repositories
[web]
baseurl = /hg
allow_push = usernamea
allow_push = usernameb
Output từ dòng lệnh từ macbook của tôi (cả Mercurial và MacHG cài đặt) sử dụng -v và cờ --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$
Output từ Windows 7 máy chủ (chỉ cài đặt TortoiseHG) cố gắng đẩy các tệp tương tự vào máy chủ (thay đổi khác nhau, nhưng chứa cùng 6 tệp bổ sung khi thay đổi được đẩy từ 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>
Đây là vấn đề tồn tại? IIS7.5 có lỗi không? Python 2.6.5 có lỗi?
Một nguồn thông tin khác là chạy từ dòng lệnh và chuyển vào cờ v và --traceback: hg -v --traceback push –