2013-03-13 38 views
6

Chú thích giúp bạn thấy được sự thay đổi gần đây nhất của dòng đó, nếu thay đổi đó là hợp nhất thì tôi không có lựa chọn nào khác ngoài rà soát thông qua lịch sử sửa đổi và tìm lần sau nó được sửa đổi.Mercurial - Xem tất cả các thay đổi sửa đổi dòng cụ thể trong tập tin

Tôi cũng đã thử hg grep -l '[contents of line]' nhưng:

  • a) Tôi không thể tìm ra cách để nhắm mục tiêu các file cụ thể (vì vậy nó sẽ mãi mãi trong một repo quy mô vừa)
  • b) Dường như với chỉ trả lại số phiên bản cuối cùng

các liên kết sau là mơ hồ tương tự - How to find all changsets where a reference to a function was modified?

Trả lời

8

Sử dụng TortoiseHg:

012.
  1. View -> Manifest
  2. Nhấp chuột phải vào tập tin quan tâm và nhấp vào "File History"
  3. nhấp chuột "chú thích với số sửa đổi"

Các bảng điều khiển cho phép bạn nhanh chóng xem lịch sử của tệp về các cam kết, bảng điều khiển phía dưới hiển thị tệp được chú thích dựa trên phiên bản đã chọn trong bảng điều khiển trên cùng.

+1

Có thể vì tôi đang sử dụng phiên bản TortoiseHg (3.2.3), nhưng tôi không thấy cách này giúp cô lập các thay đổi của một dòng? (Tôi không thể tìm thấy tùy chọn tệp kê khai nữa, nhưng chú thích hành vi của tệp từ trình đơn ngữ cảnh trình khám phá/plugin có vẻ như làm những gì mà câu trả lời này gợi ý, đó chỉ là cách một tệp xem xét các bản sửa đổi khác nhau; trong mỗi lần sửa đổi.) – downwitch

+1

vì thiếu tệp kê khai - http://stackoverflow.com/questions/23457746/manifest-button-missing-in-tortoise-hg – Tom

1

tôi nghĩ requ này ires một chút (hai bước) lập trình.

Tập lệnh trình bao sau hoạt động khá tốt đối với tôi. Nó in cả bản sửa đổi và các dòng phù hợp. Nếu bạn chỉ muốn trong danh sách các phiên bản, bạn có thể thêm một bước tước văn bản phù hợp và để lại chỉ là tiền tố sửa đổi, và có thể là ống thông qua 'sắp xếp -u':

#!/bin/bash 
# 
# script to grep for a pattern in all revisions of a file 
# Usage: scriptname 'pattern' filepath 
# 
function fatal() { 
    echo "[email protected]" 1>&2 
    exit 1 
} 

function usage() { 
    echo "[email protected]" 1>&2 
    fatal Usage: $0 pattern file 
} 

case "$1" in 
    '') usage 'missing pattern to search for' ;; 
    *) Pat="$1" ;; 
esac 

if [ "$2" != '' ]; then 
    File="$2" 
else 
    usage 'must pass file as 2nd argument' 
fi 

# -- generate list of revisions (change-sets) involving $File 
for rev in `hg log --template '{rev}\n' $File`; do 
    # -- grep the wanted pattern in that particular revision 
    hg grep "$Pat" -r $rev $File 
done 

Ghi chú:

  • không hoàn toàn hết sức rõ ràng (ví dụ như dấu ngoặc kép trong mô hình)
  • tôi không kiểm tra sự tồn tại của tập tin để hỗ trợ đổi tên/file gỡ bỏ cũng
+0

Chúc bạn có một cách để làm điều này một cách dễ dàng hơn. Tôi không sử dụng TortoiseHg – ganeshran

2

Sử dụng phản ứng của arielf mà không có một kịch bản mở rộng:

UNIX:

  • lệnh:

    hg log --template '{rev}\n' <FILE> | 
        xargs -I @ hg grep <PATTERN> -r @ <FILE> 
    
  • bạn có thể sử dụng để thêm bí danh vào tập tin cấu hình của bạn (.HGRC):

    [alias] 
    _grep_line_in_history = ! $HG log --template '{rev}\n' $2 | 
        xargs -I @ hg grep '$1' -r @ $2 
    

WINDOWS:

  • lệnh:

    FOR /F "usebackq" %i IN (`hg log --template "{rev}\n" <FILE>`) DO 
    @(echo %i & hg grep <PATTERN> -r %i <FILE>) 
    
  • bí danh:

    [alias] 
    _grep_line_in_history = ! FOR /F "usebackq" %i IN 
        (`%HG% log --template "{rev}\n" "$2"`) DO @(echo %i & %HG% grep "$1" -r %i "$2") 
    
Các vấn đề liên quan