2010-03-02 20 views
48

Tôi đang cố gắng sử dụng phần mở rộng Mercurial hg-git trên Windows (Windows 7 64 bit, để cụ thể). Tôi đã cài đặt Mercurial và Git. Tôi đã cài đặt Python 2.5 (32 bit).Làm thế nào để cài đặt đúng dulwich để có được hg-git hoạt động trên Windows?

Tôi đã làm theo hướng dẫn trên http://hg-git.github.com/ để cài đặt tiện ích. Các easy_install ban đầu thất bại vì nó đã không thể biên dịch Dulwich mà không Visual Studio 2003.

Tôi đã cài đặt bằng tay Dulwich bởi:

  • git clone git: //git.samba.org/jelmer/dulwich.git
  • cd Dulwich
  • c: \ Python25 \ python setup.py --pure cài đặt

Bây giờ khi tôi chạy easy_install hg-git, nó thành công (vì phụ thuộc Dulwich được thỏa mãn).

Trong C của tôi: \ Users \ username \ Mercurial.ini, tôi có:

[extensions] 
hgext.bookmarks = 
hggit = 

Khi tôi gõ 'hg' tại dấu nhắc lệnh, tôi thấy: "*** thất bại trong việc nhập khẩu mở rộng hggit: Không có mô-đun nào được đặt tên hggit "

Tìm trong thư mục c: \ Python25 của tôi, tham chiếu duy nhất để hggit tôi thấy là Lib\site-packages\hg_git-0.2.1-py2.5.egg. Điều này có nghĩa vụ phải được trích xuất một nơi nào đó, hoặc nó nên làm việc như-là?

Vì điều đó không thành công, tôi đã thử hướng dẫn "có liên quan" từ trang hg-git gợi ý sao chép git: //github.com/schacon/hg-git.git và tham chiếu đường dẫn trong cấu hình Mercurial của tôi. Tôi nhân bản repo, và thay đổi tập tin mở rộng của tôi trông giống như:

[extensions] 
hgext.bookmarks = 
hggit = c:\code\hg-git\hggit 

Bây giờ khi tôi chạy hg, tôi thấy: *** thất bại trong việc nhập khẩu mở rộng hggit từ c: \ đang \ hggit \ hggit: Không có mô đun nào có tên dulwich.errors.

Ok, do đó nói với tôi rằng nó là tìm hggit bây giờ, vì tôi có thể nhìn thấy trong hggit \ hggit \ git_handler.py mà nó gọi

from dulwich.errors import HangupException 

Điều đó làm cho tôi suy nghĩ Dulwich không được cài đặt một cách chính xác hoặc không ở trong đường dẫn.

Cập nhật:

Từ Python dòng lệnh:

import dulwich 

mang Import Error: No module named dulwich

Tuy nhiên, theo C: \ Python25 \ Lib \ site-packages, tôi có một dulwich- Thư mục 0.5.0-py2.5.egg dường như được điền. Điều này đã được tạo ra bởi các bước được đề cập ở trên. Có một bước bổ sung tôi cần phải thực hiện để làm cho nó một phần của con đường "Python"?

Từ dòng lệnh Python (như đề xuất trong một trong các câu trả lời):

import pkg_resources 
pkg_resources.require('dulwich') 

sản lượng [dulwich 0.5.0 (c:\python25\lib\site-packages\dulwich-0.5.0-py2.5.egg)]

Vậy điều đó cho tôi biết? Nhập dulwich không thành công, nhưng rõ ràng pkg_resources có thể tìm thấy nó. Tôi có thể làm gì với thông tin đó?

+0

Trong một phiên Python tương tác, chạy: {{{ >>> import Dulwich >>> print Dulwich .__ version__ }}} gì cho thấy? – durin42

+0

Đã thêm kết quả vào phần Cập nhật ở trên –

Trả lời

16

Điều đó khiến tôi nghĩ rằng dulwich không phải là được cài đặt đúng hoặc không trong đường dẫn .

Bạn hoàn toàn đúng. Phân phối nhị phân Mercurial cho Windows là 'đông lạnh' - chúng sử dụng mã Python và trình thông dịch đi kèm với chúng và do đó độc lập với các gói được cài đặt trong hệ thống PYTHONPATH. Khi bạn chỉ định đường dẫn đến phần mở rộng hggit trong Mercurial.ini, hg cố gắng nhập nó bằng đường dẫn trực tiếp, nhưng thư viện dulwich không được nhập một cách rõ ràng bởi hg và không đi kèm với thư viện của nó, do đó việc nhập không thành công.

Có thể thêm cả Dulwich và HgGit vào thư viện.zip được cài đặt cùng với hg.exe, nhưng đối với tôi, cách tốt nhất là cài đặt mọi thứ từ nguồn bao gồm cả lệnh Mercurial và execute bằng cách sử dụng các tệp .bat được cài đặt vào \ Python \ Scripts. Trong trường hợp này, bạn cần phải:

  1. Install Mercurial từ nguồn. Điều này xây dựng phiên bản "thuần khiết", bởi vì người dùng Windows thường không có Visual Studio hoặc trình biên dịch thay thế để biên dịch C tăng tốc.
  2. Cài đặt Dulwich - Tôi muốn sử dụng thân cây mới nhất snapshot cho cả Git và Dulwich.

    python setup.py --pure cài đặt

  3. Install HgGit mới nhất snapshot

    python setup.py cài đặt

  4. Sửa Mercurial.ini để cho phép hggit =

  5. Launch Mercurial sử dụng \ Python \
+0

Có gì sai với thêm Dulwich và HgGit vào 'library.zip'? Nó trông giống như giải pháp đẹp hơn cho tôi. –

+2

@Piotr: Không có gì sai, ngoại trừ 'library.zip' không phải lúc nào cũng là một kho lưu trữ thông thường. Vì vậy, bạn sẽ cần một kịch bản như thế này - http://techtonik.rainforce.org/2010/01/repacking-libraryzip-from-py2exe.html –

0

Cho đến khi bạn nhận được import dulwich để hoạt động, hggit sẽ không hoạt động. Kiểm tra xem tệp trứng dulwich có trong tệp easy-install.pth của bạn dưới site-packages hay không.

Đối gỡ rối hơn nữa bạn có thể thử hỏi pkg_resources về nó:

import pkg_resources 
pkg_resources.require("dulwich") 
+0

Dòng này nằm trong tệp easy-install.pth của tôi: /c/Python25/lib/site-packages/dulwich-0.5.0-py2.5.egg –

+0

Tôi đã chạy lệnh pkg_resources và đặt kết quả vào câu hỏi trên. Giờ thì sao? –

+0

Tôi có thể tạo lại kết quả chính xác của bạn bằng easy_installing dulwich và xóa nó khỏi cài đặt dễ dàng.pth Bạn đã chỉnh sửa đường dẫn theo cách thủ công trong cài đặt dễ dàng của mình -/c/Python25 có vẻ không đúng - tôi sẽ thay thế bằng dulwich-0.5.0-py2.5.egg Hoặc thậm chí tốt hơn, xóa dòng và chạy lại easy_install dulwich –

4

Hãy thử sau cấu hình (thay đổi đường dẫn của bạn), mà làm việc cho tôi:

[extensions] 
; hg-git extention 
hgext.bookmarks = 
hggit = C:\Python26\Lib\site-packages\hg_git-0.2.1-py2.6.egg\hggit 

Trong trường hợp của tôi khi tôi có giá trị trống cho hggit =, tôi nhận được lỗi tương tự như bạn thực hiện trong trường hợp này. Nhưng tôi có thể import dulwich mà không có vấn đề trong vỏ python, vì vậy bạn nên kiểm tra easy-install.pth của bạn (như được chỉ ra bởi David) nếu nó có chứa dulwich-0.5.0-py2.5.egg. Tôi cũng đã cài đặt phiên bản thuần túy của dulwich.

+0

Tôi có cần lấy trứng để làm việc không? Trong thư mục site-packages của tôi, tôi có tệp .egg đó, nhưng tôi không có thư mục có tên hg_git-0.2.1-py2.6.egg. Bạn đang tham khảo hggit trong tập tin trứng chưa được giải phóng? –

+0

Tôi không có tệp trứng và nếu tôi nhớ chính xác tệp .egg không hoạt động đúng trên máy của tôi. Sau đó, tôi đã cài đặt bằng tham số '-Z' của' easy_install' để giải nén nó trong khi cài đặt. Điều tương tự cũng áp dụng cho 'dulwich'. Hy vọng nó sẽ giúp bạn. – van

+0

Điều này làm việc cho tôi với Tortoise 1.0.3 Hg 1.5.3 được cài đặt. Hãy chắc chắn rằng bạn sử dụng -Z khi bạn easy_install hg-git, và sửa chữa đường dẫn hggit ở trên để bất kỳ phiên bản nó kết thúc lên tải về – BlackICE

8

Nếu bạn có thể cài đặt TortoiseHg, nó bao gồm dulwich và các yêu cầu khác.

+0

Yup, TortoiseHG rất tuyệt cho các cửa sổ ... – Nikhil

+0

Tôi có TortoiseHg 1.0.3 và vẫn gặp lỗi này. – BlackICE

+1

@David bạn có cài đặt chương trình thực thi Mercurial khác không? Hãy chắc chắn rằng lệnh "hg" của bạn sẽ thực thi Mercurial của TortoiseHg. hoặc thử TortoiseHg 1.0.4. – kuy

0

Tôi chạy vào vấn đề này quá với dulwich.errors bạn Scripts \ hg.bat. Thay vì cài đặt mọi thứ từ đầu. Tôi chỉ cần sao chép dulwich từ các gói trang web mặc định của tôi vào các gói trang web thủy ngân. đã làm việc mà không có vấn đề gì.

+1

Điều này sẽ làm việc, nhưng nó có nghĩa là bạn sẽ không được biên dịch các phần mở rộng C. Dulwich (và do đó hg-git) sẽ sử dụng việc triển khai python tinh khiết và do đó chậm hơn (đáng kể). – jelmer

10

Tôi tìm thấy một giải pháp đơn giản tại http://candidcode.com/2010/01/12/a-guide-to-converting-from-mercurial-hg-to-git-on-a-windows-client/

Và sau đó tôi tìm thấy một giải pháp được nêu đơn giản hơn bản thân mình:

Để sử dụng phần mở rộng Mercurial hg-git trên Windows:

  1. cài đặt Mercurial chính thức mã nhị phân
  2. đặt thư mục dulwich từ nguồn dulwich và thư mục hggit từ các nguồn hg-git vào thư mục gốc của library.zip trong thư mục cài đặt Mercurial
  3. thêm dòng sau vào% USERPROFILE% \ Mercurial.ini:

[extensions] 
hgext.bookmarks= 
hggit= 

Để có hỗ trợ SSH, bạn cần plink.exe từ PuTTY gia đình. Sau đó bạn nên thêm thông tin sau vào Mercurial.ini:

[ui] 
username = John Doe <[email protected]> 
ssh=d:/home/lib/dll/plink.exe -i "d:/home2/ssh-private-key.ppk" 

Khi kết nối với máy chủ SSH lần đầu tiên, bạn nên bắt đầu putty.exe và thử kết nối bằng cách sử dụng nó. Nó sẽ thêm dấu vân tay khóa máy chủ vào sổ đăng ký. Nếu không, plink sẽ yêu cầu bạn chấp nhận vân tay nhưng nó không chấp nhận bất kỳ đầu vào nào.

Bạn có thể sử dụng puttygen.exe để tạo khóa riêng tư. Sử dụng các khóa không có cụm mật khẩu hoặc sử dụng tác nhân xác thực ssh Pageant.exe.

+0

Tôi không biết gì về Python, vì vậy tất cả các phương pháp khác tôi đã xem hoặc tôi hoàn toàn thất bại, hoặc không cố gắng. Điều này đã làm cho nó được sắp xếp, không có vấn đề. Cảm ơn! –

+0

Tuyệt vời, làm cho nó hoạt động ... dễ dàng như vậy – Alex

-2

sudo apt-get cài đặt python-dev # Đập bạn phụ thuộc!

sudo easy_install Dulwich

thành công!

+0

'apt-get' không phải là một lệnh (thường) tồn tại trên Windows ... – anarchivist

0

Dựa trên techtonik của explanation trong những lý do cho việc nhập khẩu thất bại của dulwich.errors, tôi tìm thấy một giải pháp mà có vẻ đơn giản hơn với tôi hơn là những người đã đề xuất:

Trên Mercurial download page có được cung cấp

Mercurial <x.y.z> cho Python 2.7 trên Windows x86 (cài đặt nguồn)

Mercurial <x.y.z> cho Python 2.7 trên Windows x64 (nguồn cài đặt)

như.Các tệp EXE mà cài đặt Mercurial làm mô-đun Python vào bản cài đặt Python 2.7 (x86 hoặc x64) hiện có.

Nếu hg-git và dulwich đã được cài đặt vào bản cài đặt Python này, lỗi nhập sẽ biến mất.

Nếu bạn không biết phải làm gì bây giờ, tôi hy vọng điều này từng bước giải thích giúp:

Điều kiện tiên quyết

  • Python 2.7 được cài đặt
  • <python 2.7 install dir><python 2.7 install dir>\Scripts đang trong PATH biến môi trường
  • hg-git (và dulwich) đã được cài đặt vào cài đặt Python này qua hướng dẫn từ here

bước

  1. Hủy bỏ cài đặt bất kỳ cài đặt Mercurial hiện
  2. Tải về và cài đặt một trong các file EXE được trích dẫn ở trên, tuỳ thuộc vào việc Python 2.7 cài đặt của bạn là 32bit hay 64bit (Nếu bạn nhận được một "Python Lỗi 2,7 không thể tìm thấy trong sổ đăng ký ", có thể bạn cần một lỗi khác.)

Bây giờ hg clone <some git repo> sẽ hoạt động trên bảng điều khiển.

0

Tôi gặp lỗi này ngay cả sau khi tải xuống Tortoisehg mới nhất và đảm bảo plugin hggit đã được cài đặt cũng như tệp .ini & hgrc của tôi có mục nhập phù hợp để bật hggit.

Hóa ra vấn đề của tôi là tôi đã có cả hai loại thủy ngân và rùa trong con đường của mình. Vì vậy, khi tôi chạy bất kỳ lệnh hg, nó đã được sử dụng hg.exe trong thư mục mercurial như trái ngược với hg.exe trong thư mục torsoisehg.

Điều này có ý nghĩa nhưng cài đặt thủy ngân của tôi không có plug in. Sửa chữa của tôi là để loại bỏ mercurial từ con đường của tôi để các lệnh hg đi qua các thư mục tortoisehg vì nó có hg hoàn toàn đóng gói. Tuy nhiên, lưu ý, tùy chọn được đề xuất có thể là nâng cấp tính thương xót lên phiên bản có plugin mà người dùng cần nhưng đây là những gì có hiệu quả đối với tôi. Tôi đã cố gắng thay thế library.zip trong mercurial với một trong tortoisehg và điều này đã làm việc nhưng nó dẫn đến các lỗi khác như là một trong những tưởng tượng.

Câu trả lời của @ techtonik đã dẫn tôi xuống con đường này mà tôi rất biết ơn.

Tóm tắt: xác minh hg exe nào đang chạy lệnh hg của bạn bằng cách kiểm tra đường dẫn của bạn vì hg.exe không tìm thấy plugin vì bất kỳ lý do gì.

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