2011-06-08 18 views

Trả lời

3

hg log --stat là lệnh bạn đang theo dõi. Xem ví dụ sau:

$ hg log --stat 

changeset: 12431:56e146c7beef 
user:  flast 
date:  Wed Jun 08 16:12:54 2011 +1000 
summary:  Fix the frobulate to frob the knob correctly on tuesdays. 

path/to/src/frob/interface.py  | 29 ++++++++++++++++++++--------- 
path/to/tests/systest_frob.py  | 14 ++++++++++++++ 
2 files changed, 34 insertions(+), 9 deletions(-) 
+6

Điều này không hiển thị kb khác biệt. –

1

tôi đã có suy nghĩ tương tự chỉ ngày hôm qua! Tôi đã viết a quick and dirty Python script để xác định tổng thay đổi kích thước tệp cho một khác biệt thống nhất trên stdin hoặc dưới dạng tệp trên dòng lệnh. Để làm điều đó cho một changeset, bạn có thể chỉ:

hg diff -c <cset id> | patchsize.py 

Nhanh chóng và bẩn theo nghĩa là nó có thể không tính đến dòng cuối của nền tảng cụ thể, và nó không phân tích so sánh phiên bản đặc biệt khéo léo. Nhưng nó đủ gần cho mục đích của tôi.

+0

'hg log --stat -r cset-id' – Jerub

+2

Đúng, tôi luôn sử dụng nó. Nhưng nó chỉ đi xa như chèn dòng và xóa; Tôi đã tò mò về sự thay đổi tổng số kích thước tập tin được giới thiệu bởi một bản vá. – shambulator

3

Tôi đã có cùng suy nghĩ như @shambulator hôm qua! Vì vậy, tôi đã thêm khả năng in delta size in bytes như là một phần của --diffstat đầu ra từ tiện ích somewhat long and clean patch.py của tôi.

wget http://python-patch.googlecode.com/svn-history/r200/trunk/patch.py 
hg diff -c tip | python patch.py --diffstat -- 
codereview/views.py | 28 ++++++++++++++++++++++++++++ 
index.yaml   | 10 ++++++++++ 
2 files changed, 38 insertions(+), 0 deletions(-), +1267 bytes 

UPD: Nhờ @Gili và @mforbes bây giờ có một vé cho Mercurial
https://bz.mercurial-scm.org/show_bug.cgi?id=4245

+0

Cảm ơn kịch bản! Tôi đã nộp một vé: http://bz.selenic.com/show_bug.cgi?id=4245 – Gili

+0

Điều đó có thể hữu ích. Cảm ơn. –

+0

Máy chủ lỗi hiện có tại https://bz.mercurial-scm.org/show_bug.cgi?id=4245 – mforbes

1

Có lẽ người ta có thể sử dụng hg bundle để kiểm tra kích thước? (tôi đã không kiểm tra như thế nào phù hợp đây là về kích thước tổng kho.)

function revsize() { 
    hg bundle -r $1 --base "p1($1)+p2($1)" /dev/stdout | wc -c 
} 

Làm thế nào nó hoạt động

này tính kích thước (tính theo byte) sử dụng wc -c sau khi tạo ra một bó đối với những thay đổi giữa sửa đổi REV = $1 (đối số đầu tiên cho hàm bash) và its parents"p1(REV)+p2(REV)" (có thể có hai nếu đó là hợp nhất.) Bằng cách sử dụng /dev/stdout làm tệp, kết quả sẽ được gửi tới tiêu chuẩn. wc -c mà không cần tạo tệp đĩa.

+0

Lưu ý rằng theo mặc định, các gói được nén bằng bzip2. Không nén, sử dụng "-t none" (xem tài liệu bó hg được liên kết ở trên). – Kim

+0

@Kim Bạn có biết nếu sự khác biệt được lưu trữ nén trên đĩa hay không? Nếu không, '' -t none'' có lẽ là tốt nhất, nhưng tất cả điều này cần một số kiểm tra (hoặc một nguồn có thẩm quyền.) – mforbes

+0

Theo [câu trả lời] cổ đại này (http://stackoverflow.com/a/1270485/3387608) , các tệp ban đầu được nén, nhưng các khác biệt không được nén. Tôi chưa xác minh điều này một cách độc lập hoặc tìm thấy xác nhận gần đây hơn. – Kim

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