2008-09-10 219 views

回答

44

我不知道在Subversion中通過時間跟蹤語句的方法。

但是很簡單,但是看到文件中的任何特定行最後一次使用svn blame進行了更改。檢查SVNBook:svn blame reference

簡介

svn blame TARGET[@REV]... 

說明

只看該作者和修訂版本信息行中指定的文件或URL。文本的每一行都在開頭用作者(用戶名)和最後一次更改的修訂號進行註釋。

+0

你已經解決了OP的問題,但是我仍然想知道是否有某種方法可以跟蹤特定行的歷史記錄 - 當有太多的行和太多的修訂版來手動查看時。 – JohnK 2016-03-25 19:46:46

+1

許多gui工具,例如tortoiseSVN(在Windows上)在構建此功能方面做得很好,可以讓您走過歷史。通常突出顯示任何相鄰線條一起變化並使其容易進入該差異,然後從早期版本中選取相關行號並重復。我很高興並且很快追蹤了大型回購(> 10歲),其中包括從CVS遷移,甚至將存儲庫克隆作爲歷史記錄的一部分進行剪切和粘貼。爲了實現更多自動化,也許你可以將repo導入到git中,並使用其更高級的基於內容的責任能力。 – morechilli 2016-04-04 14:13:00

0

svn blame顯示哪個checkin修改了上一次文件中的任何行。

這也適用於舊版本。

0

一開始就是命令svn blame(或註釋,讚美)。它會顯示一行代碼的最後修改時間和修改人。例如: -

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

TortoiseSVN客戶端有一個非常不錯的功能,讓你:

  • 怪文件,顯示每行的最後一個變化(這是標準)
  • 「追溯以前版本」後,點擊上面視圖中的特定行(這是好的一行)

第二個功能是按照它說的 - 它顯示最後修改行之前的註釋修訂。通過迭代使用此功能,您可以追溯特定行的歷史記錄。

+0

如果怪不顯示該行怎麼辦?我有這種情況,我尋找特定線路的變化。用tortoise->責備修改lates修改。在文件中,我可以看到一個特定的行,在責備我無法找到它。 – Offler 2013-03-20 07:17:38

12

我通常:

  1. 運行svn blame FILE第一。
  2. 請注意特定行的最後修訂版。從那裏手動

    svn blame FILE -r 1:REV 
    
  3. 跟蹤:
  4. 請與-r說法另一個查詢。

0

這可以分兩個階段進行:

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

您可以稍後刪除blame.tmp文件,如果你不需要它。

原則上,可以用大致相同的任何腳本語言編寫簡單的腳本。

2

Eclipse就可以知道,當你的代碼的每一行已經使用SVN註釋視圖,或者在文件上點擊右鍵→團隊註解顯示...承諾。

2

這裏的關鍵是需要多少歷史記錄。正如其他人指出的,簡短的答案是:svn blame(詳情請參閱svn help blame)。如果你在歷史或遠期處理重大變化,你可能需要的不僅僅是這一個命令。

我只是自己做了這件事,並發現這(ye ole)線程在這裏。下面是我用CLI解決這個問題的方法,特別是針對我的情況,API改變了(例如,將某人遠遠過時的工作(不在分支上,)移回到基於up到最新的中繼線)。例如。函數名稱已經發生了變化,以至於不清楚哪個函數需要被調用。

第一步

下命令讓我通過網頁提交,事情的文件「fileName.h」在發生了變化,並查看相應的版本號(注意:您可能需要改變「10」根據你的svn日誌文本或多或少的情況)。

svn log | grep -C 10 "fileName.h" | less

這導致此文件的修改版本列表。

第二步

然後,它是使用blame(或其他人指出,annotate)縮小到感興趣的修訂一件簡單的事情。

cd trunk 
svn blame [email protected] | less 

例如,找到感興趣的修訂是35948.

第三步

已經發現通過指責感興趣的修訂版本,一個差異可以生產充分利用SVN工具。

svn diff -r35948:PREV fileName.h 

結論

有一個視覺差異使得它更容易與新的/更新的API名稱標識舊的API名稱。

相關問題