Điều quan trọng ở đây là cần bao nhiêu lịch sử. Như những người khác đã chỉ ra, câu trả lời ngắn gọn là: svn blame
(xem svn help blame
để biết chi tiết). Nếu bạn đang tiến xa trong lịch sử hoặc đối phó với những thay đổi quan trọng, bạn có thể sẽ cần nhiều hơn chỉ một lệnh này.
Tôi chỉ phải tự làm điều này và tìm thấy chuỗi này (ye ole) tại đây trên SO. Dưới đây là những gì tôi đã làm để giải quyết nó chỉ với CLI
, cụ thể cho trường hợp của tôi, nơi một API đã thay đổi (ví dụ như trong khi chuyển một công việc lỗi thời của ai đó (không phải trên một chi nhánh, arrgh!) trở lại vào một chi nhánh tính năng dựa trên một -to-date trunk). Ví dụ. tên hàm đã thay đổi đủ để không rõ chức năng cần gọi.
Bước Một
Lệnh sau cho phép tôi trang thông qua cam kết nơi mà mọi thứ đã thay đổi trong file "fileName.h" và để xem số phiên bản tương ứng (lưu ý: bạn có thể phải thay đổi '10' cho nhiều hay ít ngữ cảnh cho mỗi văn bản đăng nhập svn của bạn).
svn log | grep -C 10 "fileName.h" | less
Điều này dẫn đến một danh sách các phiên bản trong đó tập tin này đã được sửa đổi.
Bước Hai
Sau đó, nó là một vấn đề đơn giản của việc sử dụng blame
(hoặc như những người khác đã chỉ ra, annotate
) để thu hẹp xuống các phiên bản hấp dẫn.
cd trunk
svn blame [email protected] | less
Ví dụ: tìm thấy những sửa đổi quan tâm là 35948.
Bước Ba
Sau khi tìm thấy việc sửa đổi (s) quan tâm qua đổ lỗi, một diff có thể được sản xuất để tận dụng công cụ SVN.
svn diff -r35948:PREV fileName.h
Kết luận
Có một diff thị giác làm cho nó dễ dàng hơn để xác định tên API cũ với/tên API được cập nhật phiên bản mới hơn.
Bạn đã giải quyết vấn đề của OP, nhưng tôi vẫn tự hỏi liệu có cách nào để theo dõi lịch sử cho một dòng cụ thể không - khi có quá nhiều dòng và quá nhiều sửa đổi để xem xét thủ công. – JohnK
Nhiều công cụ gui ví dụ: tortoiseSVN (trên các cửa sổ) làm tốt công việc xây dựng trên chức năng này để cho phép bạn đi bộ lịch sử. Thông thường làm nổi bật bất kỳ đường liền kề nào đã thay đổi cùng nhau và giúp dễ dàng bước vào sự khác biệt đó, sau đó chọn số dòng có liên quan từ bản sửa đổi và lặp lại trước đó. Tôi đã vui vẻ và nhanh chóng truy tìm thông qua repos lớn (> 10 tuổi) đã bao gồm di cư từ CVS và thậm chí cắt và dán nhân bản kho lưu trữ như là một phần của lịch sử. Để tự động hóa nhiều hơn có thể bạn có thể nhập repo vào git và sử dụng khả năng đổ lỗi dựa trên nội dung nâng cao hơn. – morechilli