2010-04-02 32 views
14

Chúng tôi đang kiểm tra lái xe Mercurial tại nơi làm việc. Chúng tôi không muốn phải nhập người dùng của chúng tôi/vượt qua mỗi lần chúng tôi tương tác với một kho lưu trữ, vì vậy chúng tôi thiết lập phần mở rộng mercurial_keyring. Chúng tôi:Tiện ích mở rộng Mercurial không hoạt động trong Windows 7 x64?

  • cài đặt Python 2.6.5 (32 hoặc 64 bit, tùy thuộc vào hệ thống)
  • setuptools cài đặt (ví easy_install.exe)
  • keyring easy_install
  • easy_install mercurial_keyring

Và sau đó thực hiện các thay đổi thích hợp cho% userprofile%/mercurial.ini trong phần [auth]. Nó hoạt động tốt trên máy tính của đồng nghiệp của tôi (32bit xp sp3), nhưng nó không hoạt động trên máy tính của tôi (Windows 7 Ultimate x64). Cũng đáng chú ý, các setuptools phải được xây dựng từ nguồn trên Win 7 x64 (python setup.py bdist_wininst, sau đó chạy setuptools-0.6c11.win-amd64.exe).

Sử dụng chỉ hg.exe từ Mercurial 1,5 cài đặt nhị phân (msi), tôi nhận được lỗi này khi tôi chạy hg.exe:

*** failed to import extension mercurial_keyring: No module named mercurial_keyring

Tôi cố gắng để thay đổi mercurial.ini tôi, để xác định đường dẫn đến tệp mercurial_keyring.py, thay vì tìm kiếm nó bằng mercurial (vì nó nằm trong PYTHONPATH).

Cũ:

[extensions] 
mercurial_keyring = 

mới:

[extensions] mercurial_keyring = 
c:/mercurial/extensions/mercurial_keyring.py 

Những thay đổi lỗi:

abort: could not import module keyring!

Vì vậy, trong khi cung cấp đường dẫn đến các công trình mở rộng mercurial_keyring, module keyring phụ thuộc vẫn không thể tìm thấy.

Sau khi điều tra thêm, có vẻ như tiện ích mở rộng KHÔNG hoạt động. Tất cả chúng đều tạo ra lỗi:

*** failed to import extension [extension name]: No module named [module name]

Dường như khi chạy hg.exe, nó không nhận thức được PYTHONPATH. Tôi đã thử:

  • Python 2.6.5 32 bit
  • Python 2.6.5 64 bit
  • Building Mercurial 1,5 từ nguồn với MinGW
  • Building Mercurial 1,5 từ nguồn với MSVC9
  • Sử dụng hg .exe từ phân vùng nhị phân 1,5 (.msi)
  • Sử dụng hg.py trong c: \ python26 \ scripts khi xây dựng từ nguồn
  • Cấu hình khác nhau trong% userprofile%/mercurial.ini
  • Sử dụng công cụ thiết lập (easy_install.exe) để cài đặt keyring và mercurial_keyring
  • Khóa xây dựng và mercurial_keyring từ nguồn (thiết lập python.py bdist_wininst)

Không có gì hiệu quả. Gần nhất tôi có được là sử dụng hg.py khi xây dựng từ nguồn. Nó ít nhất không cho tôi lỗi, và thực sự tạo ra% userprofile%/wincrypto_pass.cfg khi tôi nhập thông tin đăng nhập của mình. Nhưng trên các yêu cầu tiếp theo, nó không tự động nhập thông tin đăng nhập. Nó nhắc tôi một lần nữa.

Điều thú vị là TortoiseHG bằng cách sử dụng khóa. Tôi chỉ không thể làm cho nó hoạt động trên dòng lệnh. Tôi nghĩ rằng một cái gì đó đang xảy ra với Win 7 x64 đó là ngăn chặn mercurial (hg.exe) từ nhìn thấy PYTHONPATH, vì vậy nó không thể tìm thấy bất kỳ mô-đun được cài đặt.

Có ai có tiện ích mở rộng hoạt động trong Win 7 x64 không? Cụ thể với việc cài đặt nhị phân của mercurial (không hg.py)?

CẬP NHẬT Tôi đã tìm được một công việc phù hợp cho đến bây giờ. Vì TortoiseHG hiện hoạt động với mercurial_keyring, tôi vừa thay đổi thiết lập PATH của mình để bao gồm thư mục tortoiseHG, nhưng không phải c: \ mercurial. Bây giờ khi tôi gõ "hg" tại dòng lệnh, nó sử dụng hg.exe trong thư mục tortoiseHG, nó hoạt động tốt. Chỉ cần như vậy, đây vẫn là một vấn đề với phần mở rộng mercurial trên Win 7 x64. Câu trả lời chào mừng.

Trả lời

17

Trả lời câu hỏi của riêng tôi với bản cập nhật trước của tôi, vì chưa có người vẽ nào khác.

workaround Thích hợp: Từ TortoiseHG không làm việc với mercurial_keyring, tôi đã chỉ đơn giản là thay đổi PATH của tôi để bao gồm thư mục TortoiseHg, và loại trừ c: \ lanh lợi. Bây giờ khi tôi gõ "hg" tại dòng lệnh, nó sử dụng hg.exe trong thư mục tortoiseHG, hoạt động tốt với keyring.

+0

'C: \ Program Files \ TortoiseHg' đã có trong PATH, mặc dù tôi đã phải gỡ bỏ một phiên bản Mercurial khác từ nó:' c: \ Program Files \ Mercurial' –

4

Tôi đang sử dụng:

  • trên Windows Server 2008 SP2 x86:
    • Python 2.6.5 x86
    • Mercurial 1.5.1 x86
    • TortoiseHg 1.0.1 x86
  • trên Windows Server 2008 R2:
    • Python 2.6.5 x86
    • Mercurial 1.5.1 x86
    • TortoiseHg 1.0.1 x64

Trên cả các thiết lập, tất cả các phần mở rộng cấu hình được nạp mà không có lỗi.

Tất cả các công cụ được cài đặt bằng trình cài đặt được cung cấp trên trang web của họ. Mercurial xuất hiện trước TortoiseHg trong PATH. Tôi đang sử dụng tệp cấu hình chung ~/.hgrc cho cả hai công cụ và tệp Mercurial.ini trong thư mục cài đặt TortoiseHg đang tải chỉ tiện ích mở rộng mercurial_keyring.

Trên dòng lệnh, tôi phải nhập mật khẩu mỗi lần cần thiết, nhưng trong TortoiseHg, các tiện ích mở rộng khóa hoàn toàn hoạt động.

Từ Keyring Extension trang trên wiki Mercurial:

If you are on Windows, we recommend you use TortoiseHg. THG ships with Windows specific keyring backends, without which the mercurial-keyring extension cannot function properly on Windows.

CẬP NHẬThttp://asimilatorul.com/adapter/post/using-mercurial_keyring-extension-with-mercurial-on-windows/

Bạn có thể sao chép các tập tin cần thiết từ TortoiseHg của library.zip vào Mercurial library.zip:

  • hgext \ mercurial_keyring.pyo
  • keyring__init __. Pyo
  • keyring \ backend.pyo
  • keyring \ core.pyo
  • win32_crypto.pyd
+0

Tôi biết rằng phần mở rộng keyring hoạt động với TortoiseHg. Nó không hoạt động với hg.exe được cài đặt từ cài đặt thủy ngân, bởi vì hg.exe, khi được thực hiện, dường như không thấy PYTHONPATH và không thể tìm thấy bất kỳ phần mở rộng nào. Kể từ khi bạn tải phần mở rộng keyring trong Mercurial.ini của bạn mà là cụ thể để * chỉ * tortoiseHG, bạn không cố gắng để tải nó với hg.exe mercurial. Hãy thử thêm phần mở rộng vào ~/.hgrc của bạn trên máy Server 2008 R2, và xem nó có hoạt động hay không. Đó là vấn đề. –

+0

Toàn bộ điểm thiết lập của tôi là chỉ tải keyring cho TortoiseHg. NHƯNG tất cả các phần mở rộng khác đang làm việc tốt với Mercurial trên WS2008 R2 x64 (sẽ hoạt động giống như Win 7 x64). – alexandrul

4

The extension page bang mà TortoiseHG có một số thành phần bổ sung để làm nó hoạt động trên Windows và nó không hoạt động bình thường nếu không có chúng. Có vẻ như giải pháp thay thế phiên bản TortoiseHG có thể là cách dễ nhất để làm cho nó hoạt động trên Windows.

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