Tôi đã nhận thấy rằng someanswers cho các câu hỏi về tên chi nhánh quote the Mercurial wiki để cho biết rằng quy ước đặt tên chi nhánh cho mỗi đối tượng hoặc chi nhánh mỗi lỗi có thể gây ra sự cố về hiệu suất. Khả năng đánh dấu các chi nhánh đã đóng với cờ --close-branch
trên các cam kết có ảnh hưởng gì đến yêu cầu thực hiện này không?Các nhánh đóng ảnh hưởng như thế nào đến hiệu suất Mercurial?
Trả lời
Khả năng đánh dấu các nhánh là đóng với cờ
--close-branch
trên cam kết có ảnh hưởng đến khiếu nại về hiệu suất này không?
Đánh dấu nhánh được đóng bằng hg commit --close-branch
chỉ tạo một thay đổi mới với số liệu thay đổi là close=1
. Các lệnh như hg branches
và hg heads
sau đó sẽ biết không hiển thị chi nhánh/đầu này. Các lệnh này sử dụng bộ nhớ cache chi nhánh để tăng tốc độ cho mọi thứ và chúng tôi hy vọng bộ nhớ cache sẽ mở rộng tốt với số lượng chi nhánh.
Tuy nhiên, có một số hoạt động có độ phức tạp là tuyến tính theo số lượng topo đầu. Điều này bao gồm giao thức khám phá được sử dụng trước phiên bản 1.9. Giao thức khám phá mới trong phiên bản 1.9 vẫn sẽ trao đổi các đầu tôpô trong các "mẫu" của nó, nhưng kích thước mẫu được giới hạn ở 200 lần thay đổi.
Có thể có đường dẫn mã khác mà vẫn mở rộng quy mô tuyến tính trong số người đứng đầu và đây là lý do tại sao chúng tôi đề nghị cận trước khi hợp nhất:
$ hg update bug-123
$ hg commit --close-branch -m "All fixed"
$ hg update default
$ hg merge bug-123
thay vì sáp nhập-trước-gần:
$ hg update default
$ hg merge bug-123
$ hg update bug-123
$ hg commit --close-branch -m "All fixed"
Cách tiếp cận thứ hai để lại một đầu lơ lửng trong biểu đồ (một đầu tôpô).
Đóng nhánh có thể sẽ không tạo ra bất kỳ sự khác biệt nào về hiệu suất, nhưng đó không phải là vấn đề. Các tác động hiệu suất là nhỏ, và chắc chắn không phải là lý do tôi đề nghị bạn tránh tên chi nhánh vĩnh viễn cho các dòng phát triển ngắn ngủi. Đây là báo giá có liên quan từ wiki:
Mercurial được thiết kế để hoạt động tốt với hàng trăm chi nhánh. Nó vẫn hoạt động khá tốt với mười nghìn nhánh, nhưng một số lệnh có thể cho thấy chi phí đáng chú ý mà bạn sẽ chỉ thấy sau khi quy trình làm việc của bạn đã ổn định.
Lý do cả MG và tôi (chúng tôi là người trả lời chính trong cả hai câu hỏi được liên kết của bạn) là vì chúng tôi xem mọi người rất khó chịu khi họ biết tên chi nhánh là vĩnh viễn trong Mercurial. Đây là trao đổi thông thường, tự hoạt động trong IRC vài lần một tuần:
- Người A: "Tôi có 100 chi nhánh và tôi muốn loại bỏ chúng!"
- Người B: "Bạn không thể. Bạn có thể ẩn chúng, nhưng chi nhánh Mercurial là mãi mãi."
- A: "Nhưng trong git tôi có 1000 nhánh và loại bỏ chúng bất cứ khi nào tôi muốn!"
- B: "Có, trong Mercurial những người được gọi là dấu trang."
hoặc tương tự:
- Person C: "Tôi tên là một chi nhánh 'tính năng tiếp thị ngu ngốc khiến tôi thêm' và tôi muốn đẩy sự thay đổi đó w/o đẩy tên chi nhánh."
- Người B: "Bạn không thể. Bạn có thể hợp nhất nó vào mặc định, nhưng tên đó là vĩnh viễn trên changeset. Bạn sẽ phải tạo lại changeset để loại bỏ nó!"
- C: "Nhưng trong git tên chi nhánh của tôi chỉ là địa phương!"
- B: "Có, trong Mercurial những người được gọi là dấu trang."
Nếu bạn muốn vĩnh viễn, tên chi nhánh vĩnh viễn về các thay đổi của bạn (và MG, đồng trả lời của tôi trên cả hai câu hỏi đó giống như chính xác) thì sử dụng chúng và đừng lo lắng một chút về hiệu suất. Nhưng đừng lo lắng về cách các công cụ của bạn đại diện cho các nhánh: như Mercurial, các công cụ thường được xây dựng để mở rộng quy mô về số lượng các changeset, chứ không phải số lượng nhánh. Vì vậy, họ thường làm những điều ngây thơ như đặt tất cả các tên chi nhánh vào một trình đơn thả xuống. Vấn đề GUI này cuối cùng sẽ được khắc phục khi các nhánh được đặt tên trở nên phổ biến hơn.
Tuyệt vời của Steve Losh Guide to Branching in Mercurial thực hiện công việc tuyệt vời chính tả các tùy chọn (bốn!) Của bạn. Chọn những gì bạn thích và tự tin có rất nhiều người thích bất cứ ai bạn chọn, và ít nhất một vài người trong số họ có nhiều chi nhánh hơn bao giờ hết.
Câu trả lời rất hay, tôi hoàn toàn đồng ý với lời khuyên được cung cấp tại đây. –
Cảm ơn một tấn! Tôi khá ý thức về các mô hình phân nhánh khác nhau mà chúng tôi có thể sử dụng, tôi hầu như chỉ tò mò về cách thức hoặc nếu các chi nhánh đóng bị ảnh hưởng đến các yêu cầu về hiệu suất của nhiều chi nhánh. –
- 1. z-index, ảnh hưởng đến hiệu suất như thế nào?
- 2. Tại sao các Mercurial backouts trong một chi nhánh ảnh hưởng đến các chi nhánh khác?
- 3. Trong SQL, việc sử dụng DISTINCT ảnh hưởng như thế nào đến hiệu suất?
- 4. Bí danh là gì và nó ảnh hưởng như thế nào đến hiệu suất?
- 5. Cuộc gọi phương thức ảnh hưởng đến hiệu suất trong Java như thế nào?
- 6. Dateadd ảnh hưởng như thế nào đến hiệu suất của truy vấn SQL?
- 7. lượt xem sqlite3 ảnh hưởng đến hiệu suất?
- 8. C++ Ảnh hưởng đến từ khóa có thể thay đổi đến hiệu suất của vùng chứa như thế nào?
- 9. DBMS ảnh hưởng như thế nào đến hiệu suất của ứng dụng? Và các công cụ GUI của Informix?
- 10. Mệnh đề IN ảnh hưởng như thế nào đến hiệu năng trong oracle?
- 11. Chroot ảnh hưởng đến liên kết động như thế nào?
- 12. Các mảnh Android và ảnh hưởng của nó đến hiệu suất
- 13. Làm thế nào để xóa tập tin ibdata1 và làm thế nào nó có thể ảnh hưởng đến hiệu suất?
- 14. Việc sử dụng các chức năng ẩn danh có ảnh hưởng đến hiệu suất không?
- 15. Trong Redis là tất cả các khóa băm được lưu trữ trong cùng một "bảng"? và nếu như vậy nó ảnh hưởng đến hiệu suất như thế nào?
- 16. Ảnh hưởng của Stemming đến tần suất hạn?
- 17. Việc tải nhiều gói ảnh hưởng đến hiệu suất tổng thể của một ứng dụng Symfony2?
- 18. Lệnh Sql JOIN có ảnh hưởng đến hiệu năng không?
- 19. Có nhiều dll trong dự án Windows Phone của bạn ảnh hưởng đến hiệu suất không?
- 20. Cách sử dụng BigDecimal sẽ ảnh hưởng đến hiệu suất của ứng dụng?
- 21. .NET Garbage Collection - Nó ảnh hưởng như thế nào?
- 22. Chuyển từ gỡ lỗi sang cấu hình phát hành không ảnh hưởng đến hiệu suất?
- 23. ASP.NET MVC: Định tuyến sên tùy chỉnh mà không ảnh hưởng đến hiệu suất
- 24. Việc mã hóa chuỗi cứng có ảnh hưởng đến hiệu suất không?
- 25. Vị trí của khối try-catch có ảnh hưởng đến hiệu suất không?
- 26. Nhận xét có ảnh hưởng đến hiệu suất của Perl không?
- 27. Việc sử dụng lớn các tín hiệu và khe có ảnh hưởng đến hiệu suất của ứng dụng không?
- 28. Tuyên bố in trong thủ tục SQL sẽ ảnh hưởng đến hiệu suất?
- 29. Kích thước của tệp jar có ảnh hưởng đến hiệu suất của JVM không?
- 30. Kích thước bảng có ảnh hưởng đến hiệu suất INSERT không?
Tuyệt vời. Bạn có thể chỉ cho tôi một cái gì đó mà thảo luận thêm về những người đứng đầu topo? Chúng tôi thường theo sát trước khi hợp nhất, nhưng đôi khi chúng tôi sẽ đóng một chi nhánh cũ chưa bao giờ đóng cửa (nhưng có thể có hoặc chưa được sáp nhập) và chỉ cần rời khỏi đầu ở đó. Bất kỳ vấn đề cụ thể với điều đó? –
Tôi không biết về "thảo luận" nhưng bạn chỉ có thể thấy những người đứng đầu topo của mình bằng cách: 'hg heads --topo' –