2012-03-26 33 views
13

Làm cách nào để có danh sách các tệp được sửa đổi giữa hai bộ thay đổi tùy ý?Mercurial: liệt kê các tập tin "hg diff"

đoán duy nhất của tôi là một cái gì đó khủng khiếp như thế này:

# files where something has been added 
hg diff -r AA -r BB|grep -- +++|cut -f1|cut -d/ -f2- >/tmp/ka 

# files where something has been removed 
hg diff -r AA -r BB|grep -- ---|cut -f1|cut -d/ -f2- >>/tmp/ka 

# filtering out "dev/null": it appears when a file is added or removed from the repository 
sort -u /tmp/ka |grep -v dev/null 

Có thể có một lệnh lanh Tôi không để ý?


NOT các tệp đã sửa đổi của một changeset duy nhất.
sửa: Tôi cần phải làm điều này vì tôi đang làm việc với một số lập trình viên từ thời đại đồ đồng người không hiểu những gì một .diff là, xin vui lòng chịu với tôi ...

+0

Xin vui lòng, viết bằng tiếng Ý. Bởi vì "sửa đổi từ hai thay đổi tùy ý" là phần không thể đoán trước của tiếng ồn và giải thích sai. Giữa hai, hoặc chỉ có hai? –

+1

Khá chắc chắn anh ta đang cố gắng kiểm tra những gì đã xảy ra trong một repo thay đổi-by-changeset, giống như kiểm tra lịch sử diff cho một tập tin thay đổi-by-thay đổi. –

+0

Các tệp được sửa đổi giữa changeset AA và changeset BB. Một cái gì đó như "hg diff -r AA -r BB" nhưng chỉ có tên tập tin, thay vì một sự khác biệt hoàn toàn, đó là, những gì tôi đề xuất với dòng lệnh đó. –

Trả lời

30

hg diff -r 182 -r 193 --stat

hoặc

hg status --rev 182:193

+0

oh, cảm ơn, đúng vậy! –

+0

'--rev' và' -r' hoạt động giống nhau trên hệ thống của tôi ... đó có phải là lỗi trong năm 2012 không? – mpen

+0

Dường như nó đã được sửa. –

0

giải pháp một. Khác dựa trên

>hg diff -r 3 -r 4 --stat 
comments.php | 14 +++----------- 
functions.php | 15 +++++++++++++-- 
header.php | 2 +- 
readme.txt | 17 ++++++++++++++--- 
sidebar.php | 43 ++++--------------------------------------- 
style.css  | 18 ++++++++++++------ 
6 files changed, 47 insertions(+), 62 deletions(-) 

bạn có thể nhận các tệp đã thay đổi bằng cách đọc "|" char, hoặc (cách tiếp cận tốt hơn và đẹp hơn từ POV của tôi) sản lượng ống để trố mắt, trong đó, cho kỷ lục với chính xác 4 lĩnh vực, print $ 1

Giải pháp hai. Log + khuôn mẫu + revsets

>hg log -r "3::4" --template "{file_mods}\n" 
footer.php functions.php header.php search.php style.css 
comments.php functions.php header.php readme.txt sidebar.php style.css 

chuyển đổi vào danh sách, loại bỏ các bản sao (có thể) Tôi sẽ để lại cho bạn

8

Lệnh cơ bản để tìm khi bạn muốn biết điều gì đó về tình trạng tập tin là hg status. Lệnh trạng thái là tên tệp lệnh định hướng và bạn muốn biết một số tên tệp.

Khi bạn chạy nó như

$ hg status 

sau đó nó so sánh nhà nước bản sao làm việc với các phiên bản mẹ bản sao làm việc (.). Nhưng nếu bạn chạy nó như

$ hg status --rev AA:BB 

sau đó nó sẽ hiển thị tập tin sửa đổi giữa AABB! Không cần phải grepping, cắt, phân loại hoặc mẫu.

(tôi đã giải thích điều này trước khi here, here, và here, vui lòng xem những câu hỏi và câu trả lời cho thêm lời khuyên.)

+0

Không hoạt động với -r vì "-r --removed chỉ hiển thị các tệp đã xóa" - đó là giao diện người dùng không thành công. –

+0

@asaddude: ups! Xin lỗi về điều đó, tôi đã sửa nó để sử dụng '--rev' thay thế. –

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