2010-10-07 8 views
13

Được sử dụng để làm thế nào ClearCase vẽ đồ thị tôi thấy cách Mercurial và TortoiseHg của bối rối ngay từ cái nhìn đầu tiên.Có cách nào để thay đổi cách vẽ đồ thị trong TortoiseHg không?

This là cách tôi muốn được đại diện: Static position for branches (good) Với vị trí tĩnh cho chi nhánh. Ví dụ. Bảo trì chi nhánh bên trái/phải luôn luôn và tốt nhất là trong một đường thẳng và không phải là hiện tại spaghetti cong chi nhánh bây giờ là (xem dưới đây liên kết).

This là giao diện của nó bằng cách sử dụng Trình thám hiểm TortoiseHg. Biểu đồ là từ một kho lưu trữ thử nghiệm. :-) Graph in TortoiseHg (bad)

Có cách nào để thay đổi cách vẽ đồ thị trong Mercurial không?

[sửa]

Kiểm tra MacHg và cách vẽ đồ thị. Điều này phù hợp hơn với những gì tôi muốn thấy. static/stable graph in MacHg

+0

bất kỳ cập nhật nào về cách bạn thực hiện TortoiseHG hiển thị vị trí tĩnh cho chi nhánh ? – tkokasih

+0

@wannabeprogrammer Không phải từ phía tôi. Kể từ khi tôi đã viết câu hỏi này tôi đã học được để ngừng suy nghĩ về các chi nhánh (ClearCase hoặc Subversion phong cách) và thay vào đó xem nó như là dấu trang. Chuyển sang Git đã giúp với điều đó. – MdaG

Trả lời

5

Vấn đề là bất kỳ forking cam kết tạo ra một chi nhánh "vô danh" (như trái ngược với một chi nhánh được đặt tên, mà là một khái niệm hơi khác nhau), và xem đồ thị mặc định không thể đặt cam kết trong các cột tĩnh mà không có id tốt. Do đó, người triển khai đã từ bỏ và chúng tôi có biểu đồ hiện tại.

Bây giờ, tôi nghĩ giao diện đầu tiên bạn cho là tuyệt vời và có thể sử dụng một số chẩn đoán để gán id cho các nhánh ẩn danh tùy thuộc vào (developer1-a, developer2-a, developer2-b, v.v.). Điều đó thật tuyệt. :)

Thời gian đóng góp!

Cập nhật

Những gì tôi muốn xem:

  • cam kết sắp xếp theo chiều dọc bằng cách cam kết thời gian, chứ không phải là sửa đổi nguyên id.
  • Các cam kết được sắp xếp theo chiều ngang, được nhóm theo chi nhánh được đặt tên và mỗi người gửi trong mỗi nhánh. (Và mỗi ủy thác cam kết sẽ ở gần, trong trường hợp một người giao dịch đã chia đôi và sáp nhập dữ liệu của riêng mình.)

Điều này có nghĩa là một thuật toán phải xem xét tất cả các cam kết (sẽ được xem) trước khi điền chế độ xem và đặt cam kết "dấu chấm" trong cột/hàng bên phải.

Ba đi ngang qua tất cả các cam kết phải đủ mặc dù, và mỗi thể được thực hiện trong thời gian O (n) thời gian, đó là O (n) cho tất cả mọi thứ:

  • đi bộ tất cả để thu thập dữ liệu (tập hợp chi nhánh/ủy ban) (O (n))
  • phân loại các chi nhánh/cam kết theo thứ tự cột thích hợp
  • sắp xếp cam kết theo thời gian cam kết (O (n log n) hoặc O (n) tốt hơn bằng giây trên epoch)
  • thực hiện các cam kết và vẽ các dấu chấm và dòng tổ tiên theo nhóm

Có lẽ chúng ta cần phải thông minh (er) khi định tuyến các đường giữa các cam kết, nhưng vẫn còn để được nhìn thấy. Đặc biệt, chúng tôi có thể sử dụng khoảng cách dọc giữa các dấu chấm để kết hợp các kết hợp cách nhau theo chiều dọc (tức là theo thời gian), thay vì sử dụng toàn bộ cột như thuật toán hiện tại

+0

Tôi rất muốn đóng góp cho những thứ như thế này, chỉ cần thêm thời gian. :-) – MdaG

+0

@MdaG: Vâng, tôi cũng thế. :) – Macke

+0

Tôi đã thực sự nghĩ đến việc bỏ thời gian ra khỏi lịch trình để đóng góp cho điều này ... nhưng những gì bạn vừa nói đã đi qua đầu của tôi! Tôi sử dụng mercurial trên cơ sở hàng ngày và tôi không chắc tôi hiểu ý bạn là gì. Bạn có thể giải thích thêm một chút không? – Samaursa

3

Hiện tại, dường như không có gì để làm trực quan theo cách bạn muốn.

Tôi đoán hình ảnh trực quan của trình thám hiểm TortoiseHg là trực tiếp từ tiện ích mở rộng biểu đồ.

thế nào bao giờ, có một graphviz dựa trực quan, mặc dù nó cũng tương tự như graphlog nhưng bạn có thể hack nó cách nào để làm cho nó trực quan hơn tốt hơn.

+0

Thú vị, tôi sẽ xem xét điều đó. :-) – MdaG

+0

Đó là câu hỏi cũ, nhưng có bất kỳ cập nhật nào về việc thay đổi cách biểu đồ được hiển thị không? – tkokasih