2012-11-25 30 views
5

Tôi có một tệp CSS với hàng nghìn dòng mã. Tôi muốn xem khi nào một dòng/đoạn mã cụ thể đã được thay đổi, mà không cần quay lại và xem xét từng bản sửa đổi đã thay đổi tệp này (sẽ mất một thời gian looooong!)Mercurial - cách xem lịch sử cho một dòng mã cụ thể

Có cách nào hay không, bằng cách sử dụng TortoiseHg, Eclipse với một plugin Mercurial, hoặc dòng lệnh, để xem lịch sử của một đoạn mã cụ thể?

Trả lời

16

Câu trả lời đúng là hg grep (Mercurial grep page).

More sâu:

hg grep --all "PATTERN" FILENAME 

Mẫu đầu ra:

>hg grep --all "textdomain" functions.php 
functions.php:2:-:load_theme_textdomain('fiver', get_template_directory() . '/translation'); 
functions.php:2:+:load_theme_textdomain('fiver', get_template_directory() . '/languages'); 
functions.php:1:+:load_theme_textdomain('fiver', get_template_directory() . '/translation'); 

(theo thứ tự - tên tập tin, sửa đổi, hành động, chuỗi trong phiên bản này)

+1

--all là cờ chính xác. -all không hoạt động. – Sasha

+1

Tôi không nghĩ đây là câu trả lời đúng, mặc dù nó được chấp nhận. Điều này sẽ tìm kiếm sự xuất hiện của một mẫu nhất định trong một tệp, trong suốt lịch sử. Nó sẽ không cung cấp cho bạn lịch sử của một dòng cụ thể trong một tệp, trừ khi chỉ xảy ra chỉ là một dòng khớp với mẫu đó trong suốt lịch sử. 'hg annotate' cung cấp thông tin đúng, mặc dù bạn vẫn phải tự nhảy ngược lại thông qua lịch sử để có được chuỗi sự kiện đầy đủ. – jwd

1

Tôi không nghĩ rằng có một tùy chọn để xem một phần cụ thể của tệp. Tuy nhiên, để thấy sự khác biệt của tổng số tập tin trong vài phiên bản bạn có thể sử dụng hg diff:

hg diff -r firstrevisionnumber:otherrevnumber filename 

Ví dụ, hg diff -r 0:8 screen.css

Hoặc lệnh hg log screen.css.

+0

này là tốt để biết, nhưng không không giúp đỡ cho tình huống cụ thể này, vì tôi không có ý tưởng về phạm vi sửa đổi để xem xét, và chúng tôi có gần 3.000 sửa đổi trong lịch sử cho đến nay. –

13

Bạn có thể sử dụng:

hg annotate <file> 

để tìm hiểu trong đó dòng sửa đổi đã được thay đổi và sau đó sử dụng cùng một lệnh với -r <revision> ở cuối để đi ngược thông qua sửa đổi.

+0

cảm ơn, đây chỉ là những gì tôi cần! –

+1

Đổ lỗi cho thấy chỉ: 1. Sửa đổi gần đây nhất của thay đổi 2. không thể hiển thị thông tin cho các chuỗi hiện đang bị xóa –

+1

Thật không may đây là một quá trình rất thủ công ..:} – user2864740

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