2009-12-08 28 views
73

Tôi đã chơi đùa với hg/mercurial gần đây, cụ thể là kết hợp với lò nung của Fogcreek, và tôi đang cố gắng tìm ra những phần mở rộng phải có. Của nó một chút khéo léo chọn lọc thông qua danh sách mở rộng của họ bởi vì tôi không quan tâm đến thử nghiệm bất kỳ phần mở rộng lỗi hoặc không thực tế, ngay cả khi mô tả của họ âm thanh tuyệt vời.Tiện ích mở rộng hg/mercurial tốt nhất và phải có là gì?

Vì vậy, bạn sử dụng tiện ích mở rộng hg nào?

Xem Using Extensions

+0

Có lẽ không "deps" - thử nghiệm ban đầu của tôi làm cho nó có vẻ quá lỗi/mới để sử dụng –

+0

Danh sách tôi cũng thêm [task extension] (https://bitbucket.org/alu/hgtasks/wiki/Home) để quản lý "các tác vụ mã hóa" và [nhắc mở rộng] (http://mercurial.selenic.com/wiki/PromptExtension) để hiển thị thông tin kho lưu trữ trên dấu nhắc trình bao. Nhắc có thể sử dụng phần mở rộng nhiệm vụ. Cả hai đều không được vận chuyển với hg. – Paolo

Trả lời

97

riêng danh sách hit của tôi:

Những cái đơn giản bạn phải có:

  1. color: colorize đầu ra từ lệnh như diffstatus, mà làm cho nó dễ dàng hơn để đánh giá.
  2. pager: duyệt dài đầu ra một trang tại một thời điểm.
  3. fetch: kéo, cập nhật và hợp nhất từ ​​một repo khác trong một bước.
  4. graphlog: hiển thị biểu đồ sửa đổi trong trình bao của bạn, cực kỳ hữu ích khi xem các nhánh trong lịch sử nhật ký của bạn.
  5. hgk: duyệt kho lưu trữ với một giao diện đồ họa (xem thêm TortoiseHg và Murky)

Nếu bạn kích hoạt pager, bạn nên cấu hình nó để không can thiệp với các lệnh nhất định:

[pager] 
pager = LESS='FSRX' less 
ignore = version, help, update, serve, record 

Các trung gian tiện ích mở rộng tôi khuyên bạn nên sử dụng (và sử dụng thường xuyên):

  1. record: cho phép bạn tương tác ly chọn các tập tin của các tập tin để cam kết - hoàn hảo cho khi bạn đang ở giữa một bộ thay đổi, và bạn sẽ sửa chữa một cái gì đó mà cần phải có cam kết riêng của mình.
  2. extdiff: cấu hình một công cụ diff bên ngoài (như meld)
  3. share: có nhiều máy nhái sử dụng lịch sử repo cùng

Các phần mở rộng nâng cao tôi sẽ không được mà không có:

  1. mq : quản lý một chồng các bản vá lỗi. Rất mạnh mẽ, cho phép phân lớp các mảng trên đỉnh của cây.
  2. notify: gửi thông báo qua email khi repo được thay đổi.
  3. rebase: áp dụng lại thay đổi cục bộ ở đầu bản sửa đổi gốc mới.
  4. largefiles: làm việc với các tập tin nhị phân lớn bên ngoài cửa hàng hg

Tất cả các bên trên được đóng gói với Mercurial, và là ổn định và được kiểm tra kỹ. Tôi rất khuyên tất cả chúng.

mở rộng Non-core giá trị điều tra:

  1. shelve: chọn lọc đặt sang một bên những thay đổi (tại granularity của hunks) và khôi phục chúng.
  2. acl: chọn lọc cho phép truy cập đến các bộ phận khác nhau của cây kho

mở rộng Thay thế và di cư đến cốt lõi (thông tin từ @ durin42):

  • forest đã được thay thế bởi sự hỗ trợ subrepo giới thiệu trong v1.3
  • bookmarks nằm trong lõi và luôn được bật
  • transplant bị thay thế bởi graft, một lệnh lõi
  • histedit là trong lõi như của v2.3, nhưng tắt theo mặc định
  • inotify không được khuyến khích, vì có vẻ là một lỗi do một điều kiện chủng tộc
+0

Bất kỳ nhận xét nào khác về Subrepo so với Forest? Tôi không lạc quan rằng một trong hai điều đó thực sự hữu ích/có thể sử dụng được - điều này có thể ngụ ý tôi chỉ là 'làm sai'. Tôi đặc biệt quan tâm đến một cải tiến mạnh mẽ đối với màu 'extern' –

+0

của SVN không hoạt động trên Windows (http://mercurial.selenic.com/bts/issue1579) – Jerome

+0

@JJBigThoughts: Gần đây tôi đã bắt đầu thử nghiệm với hỗ trợ subrepo, với quan điểm sử dụng nó cho một dự án rất lớn. Theo các tác giả Mercurial, hỗ trợ subrepo vẫn còn phần nào thử nghiệm. Hiện tại nó hoạt động giống như svn: externals, nhưng chỉ một vài lệnh biết về subrepos. Các khái niệm cơ bản dường như hoạt động tốt, AFAICT. Sự khác biệt chính là phiên bản của mỗi subrepo được ghim một cách hiệu quả, vì cha mẹ lưu trữ một tham chiếu đến số sửa đổi của nó cũng như vị trí (mà không nhất thiết phải là một điều xấu). – gavinb

10

graphlogmq đặc biệt ngon.

  1. Chuyển đổi: chuyển đổi đến và đi từ các hệ thống khác
  2. MQ (Mercurial Queues): đối phó với những thay đổi như một chồng bản vá lỗi
  3. Forest: cho phép bạn cam kết và cập nhật nhiều kho Mercurial lồng nhau cùng một lúc
  4. Chia sẻ: để tiết kiệm thời gian và dung lượng đĩa khi làm việc với các kho lưu trữ tương tự
  5. Hgk: cung cấp chế độ xem đồ họa lịch sử
  6. Đồ họa: Tôi luôn nhập 'hg glog' chứ không phải 'hg log'. Chế độ xem nghệ thuật ascii của lịch sử
  7. Ghép: Hữu ích khi bạn chỉ muốn kết hợp một vài thay đổi từ một chi nhánh khác. hg rebase mới hơn có thể có một số trùng lặp.
  8. Rebase: Một cách khác để xử lý các thay đổi dưới dạng tập hợp các changesets trên cùng một nhánh. git người dùng muốn rebase. Có thể thay thế mq cho nhiều trường hợp sử dụng.
  9. Giá: Nơi lưu trữ các thay đổi của bản sao làm việc nếu bạn phải làm việc trên một thứ khác trong một thời gian.
  10. Dấu trang: Đặt tên cho lần commit mới nhất trên một nhánh cụ thể. Tương tự như git chi nhánh.
+0

graphlog hiện được tích hợp sẵn và luôn được bật bằng '-g' cho lệnh nhật ký (và đến một IIRC gửi đi). –

+0

Ry4an: "bây giờ" có nghĩa là trong mẹo? Không phải trong 1.4.1 AFAICT. –

+1

Cờ '-g' cho nhật ký là để bật các kiểu khác biệt của git, khác với' graphlog'. – jamessan

7

Nếu bạn đang làm việc với một máy chủ chậm như Bitbucket, progress là điều cần thiết.Nếu không hg push vẻ như nó treo: \

1

danh sách của tôi:

  1. graphlog. Tôi sử dụng nó nhiều hơn hg log. (muốn nó có thể giới hạn cho các chi nhánh)

  2. tẩy. xóa tất cả các tệp không có trong Mercurial. Tôi sử dụng nó thay vì hoặc là một phiên bản sạch sẽ hơn.

Ít được sử dụng, nhưng đẹp:

  • trẻ em (cho phép bạn nói "con hg -r XXX")
  • parentrevspec: cho phép bạn nói những thứ như "foo ~ 2 = foo^1^1 = foo ^^ = cha mẹ đầu tiên của cha mẹ đầu tiên của foo "

Tôi tiếp tục cố gắng sử dụng các công cụ chỉnh sửa lịch sử nhưng vẫn tiếp tục gặp phải giới hạn. Tôi muốn họ hoạt động.

  • sụp đổ
  • histedit
  • tôi xem xét rebase một biên tập tol lịch sử cũng

Bằng cách này, hãy cẩn thận: HGK và lấy là "không được yêu thương": https://www.mercurial-scm.org/wiki/UnlovedFeatures. Nhưng sau đó, SubRepos, không được yêu thích, nhưng là một tính năng của phương sách cuối cùng, và tôi sử dụng subrepos.

9

Chưa đề cập: mercurial_keyring

https://www.mercurial-scm.org/wiki/KeyringExtension

"mở rộng Keyring sử dụng dịch vụ của thư viện keyring để lưu một cách an toàn mật khẩu xác thực (HTTP/HTTPS và SMTP) sử dụng hệ thống cơ sở dữ liệu mật khẩu cụ thể (Gnome Keyring, KDE KWallet , OSXKeyChain, các giải pháp dành riêng cho Win32 và dòng lệnh). "

Tôi sử dụng ssh để truy cập repos của mình trên GitHub và Bitbucket và cụm từ khóa của tôi được giữ trong móc khóa. Phần mở rộng này cho phép Mercurial nhận được nó bất cứ khi nào cần thiết.

Cũng cần cho tôi: hg-git

http://hg-git.github.com/

Plugin Mercurial cho phép bạn kéo và đẩy Repos git sử dụng hg như một khách hàng. Sử dụng nó mọi lúc.

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