Tạo danh sách các tệp đã thay đổi giữa các phiên bản hg


118

Tôi muốn tạo danh sách các tệp đã thay đổi giữa hai bản sửa đổi trong một thư mục nhất định trong Mercurial.

Đặc biệt, tôi không quan tâm đến những gì đã thay đổi, mà những tệp nào đã thay đổi trong thư mục đó.

Ví dụ: giả sử rằng giữa thenotherthen, chỉ có 2 tệp được thay đổi:

>hg hypothetical-command -r then:otherthen
foo.baz
bar.baz
>

Lệnh giả định là gì? Tôi đã thử diff và log, nhưng không thể thuyết phục được họ làm như thế nào: hoặc tôi nhận được bản vá (diff), hoặc tôi nhận được toàn bộ repo (nhật ký).

Câu trả lời:


166
hg status --rev x:y

ở đâu xylà số sửa đổi mong muốn (hoặc tên thẻ hoặc tên chi nhánh).

Nếu bạn đang sử dụng thiết bị đầu cuối trong cửa sổ, hãy thêm hg status --rev x:y> your-file.txtđể lưu danh sách vào một tệp.


3
Để chỉ xem những thay đổi trong thư mục hiện tại:hg status --rev x:y .
Người dùng

14
Để xem những thay đổi trong bản sửa đổi mới nhất: hg status --rev .^
kunigami

8
Để chỉ lấy danh sách các tên tệp (và không có ký tự tiền tố nào cho biết loại thay đổi), hãy nối thêm -n, tức làhg status --rev x:y -n
Cheetah

1
hg status --change .liệt kê các tệp đã thay đổi trong .- cùng một danh sách hg status --rev .^nhưng trực tiếp hơn
Metaxis 14/10/15

14

trạng thái là những gì bạn cần.

Tuy nhiên, tùy thuộc vào ý bạn của "giữa hai bản sửa đổi", bạn cũng có thể cân nhắc sử dụng " x :: y " (DAG - Đồ thị vòng được hướng dẫn).

Đã đưa ra các bộ thay đổi song song,

1--2---4 \---3

hg status --rev 1:4 sẽ trả về (1,2,3,4), tức là bất kỳ thứ gì giữa và bao gồm các điểm cuối, theo vòng quay số, cục bộ . Điều này có thể (và hầu hết có thể sẽ) trả lại các kết quả khác nhau trong các kho lưu trữ - mặc dù có liên quan - khác!

hg status --rev 1::4sẽ trả về (1,2,4), tức là các điểm cuối và tất cả các tập thay đổi là con cháu của '1' VÀ tổ tiên của '4'.

Trường hợp thứ hai, x :: y, thường hữu ích hơn trong các ứng dụng thế giới thực. Đây là những gì bạn nhận được thông qua TortoiseHg \ Visual Diff.


> bản sửa lại trợ giúp hg:

"x :: y" Một dải DAG, có nghĩa là tất cả các tập thay đổi là con cháu của x và tổ tiên của y, bao gồm cả chính x và y. Nếu điểm cuối đầu tiên bị bỏ đi, điều này tương đương với "tổ tiên (y)", nếu điểm cuối thứ hai bị bỏ đi thì tương đương với "con cháu (x)".


1
Có thể bạn cần bao gồm lệnh một cách rõ ràng để câu trả lời của bạn không phụ thuộc vào câu lệnh kia và dễ bị đánh lừa hơn. Một cái gì đó như "Có, trạng thái là những gì bạn cần. Ví dụ: hg status --rev x::y".
PhoneixS
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.