2010-03-23 26 views
18

Tôi có một kho lưu trữ Mercurial mà tôi có thể thấy tốt nếu tôi điều hướng đến nó trong trình duyệt, nhưng khi tôi cố gắng đẩy, với đường dẫn mặc định được đặt thành cùng một URL mà tôi truy cập trong trình duyệt, tôi nhận được :Mercurial: Tại sao tôi gặp lỗi 404 khi chuyển đến một kho lưu trữ có URL mà tôi có thể truy cập trong trình duyệt?

abort: HTTP Error 404: Not Found 

URL mà tôi có nên thay đổi theo một cách nào đó không?

+0

Xem thêm: http://stackoverflow.com/questions/3068627/mercurial-client-error-255-and-http-error-404-when-attempting-to-push-large-file –

Trả lời

5

Đây có phải là tương tự như this configuration, nơi hgweb.config cần phải được cấu hình đúng cách:

/ = /home/my_username/hg/** 

(với hai ngôi sao tại sau đó kết thúc)

Hoặc là nó một http vs. https issue?

Đối với https, bạn cần số correct .hgrc file, nếu không bạn cũng có thể gặp lỗi 404.
Xem .hg/hgrc file man page.

[ui] 

username = [email protected] 

password = mypassword 

schemes = https 

[paths] 

default = https://myURL.kilnhg.com/Repo/Repositories/Groups/myrepo 
+1

Nó không phải là thứ hai, như cố gắng mà không có vẻ để giúp đỡ. Tôi nên có tệp hgweb.config ở đâu?Tôi không thể tìm thấy nơi tập tin đó nên tồn tại trong Windows (7). –

+1

@ Giống như: 'hgweb.config' sẽ ở phía máy chủ: nếu bạn không có quyền truy cập vào nó, chúng tôi chỉ có thể giả định nó là chính xác và thông tin đăng nhập/lược đồ truy cập của bạn bằng cách nào đó bị lỗi. – VonC

+0

Tôi không biết nếu nó là, cụ thể, nhưng nó chắc chắn là một số thiết lập phía máy chủ. –

2

Tôi đã gặp phải vấn đề tương tự và cuối cùng là các ĐỘNG TỪ được phép cho trình xử lý CGI. Tôi đã giới hạn nó để GET, POST và HEAD, nhưng cuối cùng đã thay đổi nó để cho phép tất cả và nó hoạt động tốt ngay bây giờ.

12

Chúng tôi đột nhiên bắt đầu nhận được lỗi này trên kho lưu trữ Mercurial chính của chúng tôi, được lưu trữ trong IIS trên Windows 2008. When your repository has too many heads, Chuỗi truy vấn Mercurial POSTs dài hơn IIS chọn để xử lý.

Bạn có thể biết bằng cách xem mã trạng thái phụ của yêu cầu không thành công trong nhật ký IIS (thường là số sau mã trạng thái HTTP bình thường). Trong tình huống này, IIS trả về a sub-status of 15 có nghĩa là chuỗi truy vấn quá dài. Đừng quên kiểm tra mã trạng thái phụ của bạn!

Để khắc phục vấn đề, you'll need to increase IIS's maxiumum query string length:

# Get the current query string size limit 
c:\windows\system32\inetsrv\appcmd list config /section:requestFiltering -text:requestLimits.maxQueryString 

# Set the new query string size limit 
c:\windows\system32\inetsrv\appcmd set config /section:requestFiltering /requestLimits.maxQueryString:<NEW SIZE> 
+0

Hữu ích khi biết! – shambulator

+0

Đẹp, điều này làm tôi bối rối trong một vài giờ – redsquare

+1

Chúng tôi đã có vấn đề chính xác này và câu trả lời của bạn đã sửa nó, cảm ơn rất nhiều! Đối với những người có thể gặp khó khăn khi xác định xem điều này có xảy ra với họ hay không - tìm kiếm chuỗi "404 15" trong nhật ký IIS của bạn, nếu bạn tìm thấy nó sau chuỗi truy vấn LONG thì câu trả lời này cũng sẽ giúp bạn. –

12

"nội dung quá lớn" là những gì tôi đã có. Đi tới nhật ký IIS và tìm "404 13".

Để khắc phục sự cố, trong trình quản lý IIS, hãy chuyển đến tùy chọn "Yêu cầu lọc" và sau đó chọn tab "Tiêu đề".

Sau đó chuyển đến "Chỉnh sửa cài đặt tính năng" ở bên phải. Sau đó chọn một số thực sự lớn cho trường "Nội dung tối đa được phép (Bytes)".

Điều này đã khắc phục được sự cố của tôi.

1

Tôi đã nhận được lỗi này trong khi cố gắng đẩy nhiều thay đổi, với kích thước lớn nhất có nhiều tệp nhị phân (cập nhật jpg trên trang web). [jpg dưới sự kiểm soát nguồn, trong cùng một repo như nguồn có thể không phải là cách tiếp cận tốt nhất, nhưng đó là ngoài điểm.]

Trong trường hợp này, nếu bạn không có quyền truy cập cấu hình IIS, một tác phẩm -around là để đẩy ít changesets tại một thời điểm. Trong TortoiseHg, sử dụng tính năng Outgoing, nhấp chuột phải vào changeset trên cùng của tập hợp con bạn muốn đẩy và chọn Push To Here. Nói lại.

Các vấn đề liên quan