2008-09-10 26 views

Trả lời

44

Tôi không biết phương pháp theo dõi các câu lệnh thông qua thời gian trong Subversion.

Tuy nhiên, thật đơn giản khi thấy bất kỳ dòng cụ thể nào trong tệp được thay đổi lần cuối bằng cách sử dụng svn blame. Kiểm tra SVNBook: svn blame reference:

Tóm tắt

svn blame TARGET[@REV]... 

Mô tả

Hiện tác giả và sửa đổi thông tin trong-line cho các file được chọn hoặc URL. Mỗi dòng văn bản được chú thích ngay từ đầu với tác giả (tên người dùng) và số sửa đổi cho lần thay đổi cuối cùng của dòng đó.

+0

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

+1

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

0

Lệnh đổ lỗi cho thấy bạn đã sửa đổi bất kỳ dòng nào trong một tệp lần trước.

Điều này cũng hoạt động trên các bản sửa đổi cũ.

0

Bắt đầu là lệnh svn đổ lỗi (hoặc chú thích, khen ngợi). Nó sẽ hiển thị cho bạn khi một dòng mã được sửa đổi lần cuối và được sửa đổi. ví dụ .:

4564 wiemann # $Id$ 
    4564 wiemann # Author: David Goodger <[email protected]> 
    778 goodger # Copyright: This module has been placed in the public domain. 
    217 goodger 
37

Trong client TortoiseSVN có một tính năng rất thoải mái cho phép bạn:

  • đổ lỗi một tập tin, hiển thị sự thay đổi cuối cùng cho mỗi dòng (đây là tiêu chuẩn)
  • "đổ lỗi cho phiên bản trước", sau khi nhấp vào một dòng cụ thể trong chế độ xem ở trên (đây là dòng tốt nhất)

Tính năng thứ hai làm theo những gì nó nói - nó hiển thị sửa đổi chú thích trước sửa đổi cuối cùng cho dòng. Bằng cách sử dụng tính năng này lặp đi lặp lại, bạn có thể theo dõi lại lịch sử của một dòng cụ thể.

+0

điều gì sẽ xảy ra nếu đổ lỗi không hiển thị dòng? Tôi có trường hợp mà tôi tìm kiếm sự thay đổi của một dòng cụ thể. Được sử dụng tortoise-> đổ lỗi Hãy sửa đổi trên lates sửa đổi. Trong tập tin tôi có thể nhìn thấy một dòng cụ thể, trong đổ lỗi cho tôi không thể tìm thấy nó. – Offler

12

Tôi muốn thường:

  1. Run svn blame FILE đầu tiên.
  2. Lưu ý bản sửa đổi cuối cùng của dòng cụ thể.
  3. Do một truy vấn với đối số -r:

    svn blame FILE -r 1:REV 
    
  4. vết bằng tay từ đó.
0

này có thể được thực hiện theo hai giai đoạn:

  1. svn blame /path/to/your/file > blame.tmp
  2. grep "your_line_of_text" blame.tmp

Bạn có thể xóa tập tin blame.tmp sau đó nếu bạn không cần nó.

Về nguyên tắc, một tập lệnh đơn giản có thể được viết bằng bất kỳ ngôn ngữ kịch bản nào gần như giống nhau.

2

Trong Eclipse bạn có thể biết khi nào mỗi dòng mã của bạn đã được cam kết sử dụng SVN chú thích xem, hoặc click chuột phải vào file → ĐộiHiện chú thích ....

2

Đ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.

+0

Đối với kịch bản cụ thể của tôi, nếu bạn may mắn và làm việc với mã có thông điệp cam kết tốt trong nhật ký, thậm chí bạn có thể 'grep' cho tên API/chức năng cũ và tìm nhận xét có nội dung" * đã thay đổi func_FindParm thành func_GetParm * ". – tniles09

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