2010-05-19 31 views
10

Lưu ý, điều này có lẽ là phù hợp nhất trên serverfault.com, nhưng vì nó là về lưu trữ một kho mã nguồn lập trình viên, tôi không hoàn toàn chắc chắn. Tôi đăng bài ở đây trước tiên, tin tưởng rằng nó sẽ được di chuyển nếu cần thiết.Lưu trữ Mercurial trên IIS7

Tôi đang cố gắng lưu trữ các bản sao lưu trữ Mercurial trên máy chủ của riêng mình (tôi có repo chính ở nơi khác), và tôi đang cố gắng thiết lập Mercurial trong IIS.

Tôi đã làm theo hướng dẫn here , nhưng tôi nhận được thông báo lỗi .

Giải quyết: Xem phần dưới của câu hỏi này để biết chi tiết.

Các thông báo lỗi là:

mercurial.error.RepoError: repository /path/to/repo/or/config not found

Đây là những gì tôi đã làm.

  1. Tôi đã cài đặt Mercurial 1.5.2
  2. Tôi tạo ra c: \ inetpub \ hg
  3. Tôi tải về các nguồn hg theo các hướng dẫn của trang web, và sao chép các tập tin hgweb.cgi vào c: \ inetpub \ hg (lưu ý, trang web nói hgwebdir.cgi, nhưng tập tin đặc biệt này không tồn tại, hgweb.cgi hiện, tuy nhiên, điều này có thể là nguồn gốc của vấn đề?)
  4. tôi đã thêm một hgweb.config, với những điều sau nội dung:

    [paths] 
    repo1 = C:/hg/** 
    [web] 
    style = monoblue 
    
  5. Tôi tạo ra c: \ hg, tạo ra một bài kiểm tra thư mục con, và tạo ra một kho lưu trữ bên trong nó

  6. Tôi đã cài đặt python 2.6.5, phiên bản mới nhất 2.6 từ trang web (trang web đề cập đến tôi cần phải cài đặt phiên bản chính xác hoặc tôi sẽ nhận được thông báo lỗi cụ thể, vì tôi không nhận được thông báo lỗi trông giống như thông báo được đề cập, tôi cho rằng 2.6.5 không phải là vấn đề)
  7. Tôi đã thêm một ảo mới lưu trữ hg.vkarlsen.no, trỏ nó tới c: \ inetpub \ hg
  8. Đối với máy chủ lưu trữ này, tôi đã thêm ánh xạ tập lệnh trong phần Ánh xạ xử lý, ánh xạ * .cgi đến c:\python26\python.exe -u %s %s theo hướng dẫn trên trang web.

Sau đó, tôi đã thử nghiệm bằng cách điều hướng đến http://hg.vkarlsen.no/hgweb.cgi, nhưng tôi nhận được thông báo lỗi.

Để làm cho nó dễ dàng hơn để kiểm tra, tôi giảm xuống còn một dấu nhắc lệnh, chuyển đến c: \ inetpub \ hg, và thực hiện các lệnh sau (thông báo lỗi là một phần của văn bản dưới đây):

C:\inetpub\hg>c:\python26\python.exe -u hgweb.cgi 
Traceback (most recent call last): 
    File "hgweb.cgi", line 16, in <module> 
    application = hgweb(config) 
    File "mercurial\hgweb\__init__.pyc", line 12, in hgweb 

    File "mercurial\hgweb\hgweb_mod.pyc", line 30, in __init__ 

    File "mercurial\hg.pyc", line 82, in repository 

    File "mercurial\localrepo.pyc", line 2221, in instance 

    File "mercurial\localrepo.pyc", line 62, in __init__ 

mercurial.error.RepoError: repository /path/to/repo/or/config not found 

Có ai biết những gì tôi cần phải xem xét để sửa lỗi này?


Sửa: Ok, tôi nghĩ rằng tôi quản lý để tiến một bước gần hơn đến giải pháp, nhưng tôi vẫn đang bối rối.

Tôi đã nhận ra.tập tin cgi là một kịch bản file python, và không phải cái gì biên dịch, vì vậy tôi mở nó ra để chỉnh sửa, và những dòng này đang ngồi trong đó:

# Path to repo or hgweb config to serve (see 'hg help hgweb') 
config = "/path/to/repo/or/config" 

Vì vậy, đây là nguồn của tôi cho thông báo lỗi cụ thể.

Nếu tôi thay đổi dòng này:

config = "c:\\hg\\test" 

Sau đó, tôi có thể điều hướng kho rỗng thông qua giao diện web Mercurial.

Tuy nhiên, tôi muốn lưu trữ nhiều kho, và nhìn thấy như dòng nói rằng tôi cũng có thể liên kết đến một tập tin hgweb cấu hình, tôi đã cố gắng này:

config = "c:\\inetpub\\hg\\hgweb.config" 

Nhưng sau đó tôi nhận được thông báo lỗi sau:

mercurial.error.Abort: c:\inetpub\hg\hgweb.config: not a Mercurial bundle file 
Exception ImportError: 'No module named shutil' in <bound method bundlerepository.__del__ 
of <mercurial.bundlerepo.bundlerepository object at 0x0260A110>> ignored 

Không có gì tôi đã cố gắng cho biến cấu hình dường như làm việc:

config = "hgweb.config" 
config = "c:\\hg\\hgweb.config" 
  • các biến thể khác nhau mà tôi không nhớ.

Vì vậy, vẫn stumped, con trỏ ai?

Hy vọng câu hỏi này sẽ cung cấp cho người khác một số thông tin nếu chúng bị bóp nghẹt như tôi.

+1

Bạn có thể trả lời cho chính mình và chấp nhận câu trả lời của bạn, vì vậy câu hỏi không hiển thị là chưa được trả lời. – tonfa

+0

Cảm ơn lời nhắc. –

Trả lời

7

tôi đã kết thúc cần phải chỉnh sửa file hgweb.cgi:

from: from mercurial.hgweb import hgweb, wsgicgi 
     application = hgweb(config) 

to: from mercurial.hgweb import hgweb, hgwebdir, wsgicgi 
     application = hgwebdir(config) 

Lưu ý các phần hgwebdir thêm ở đó. Đây là tệp hgweb.config của tôi, nằm trong cùng thư mục với tệp hgweb.cgi:

[collections] 
C:/hg/ = C:/hg/ 

[web] 
style = gitweb 

Điều này bây giờ phân phát các kho của tôi thành công.

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