2012-07-02 61 views

回答

0

參考下面的例子中,使用svn log command與用戶名, 'jainendra':

svn log | sed -n '/jainendra/,/-----$/ p' 

這裏sed的是Linux命令。

0

嘗試使用

svn log --username <username> 

命令

此外,您還可以添加--limit ARG所以你沒有得到你的屏幕充滿提交。當爲用戶名輸入svn時,這是你無法輕易實現的。

svn log --username ankit --limit 2 
0

您需要解析的svn log(或svn status)輸出只搜索該用戶的條目。

如果使用svn log --xml,可以執行對結果的XPath查詢或應用XSLT來執行此過濾,捕捉所有<logentry>節點用含有所需的用戶名一<author>節點。

2

這種類型的分析/報告問題在PowerShell中相當簡單(當然只有Windows)。這個主力開始SVN的日誌數據轉換爲PowerShell的對象:

Function Get-SvnLogData() 
{ 
    ([xml](svn log -v --xml)).log.logentry | % { 
     $nestedEntry = $_ 
     $_.paths.path | % { 
      $path = $_ 
      $nestedEntry | Select-Object -Property ` 
       Author, ` 
       @{n='Revision'; e={([int]$_.Revision)}}, ` 
       @{n='Date';  e={Get-Date $_.Date }}, ` 
       @{n='Action'; e={$path.action  }}, ` 
       @{n='Path';  e={$path.InnerText }}` 
     } 
    } 
} 

一旦記錄轉換爲對象,PowerShell的cmdlet的原生提供了無數的方式來整理數據。以下是解決手頭問題的幾種可能性:

問題1:每個文件何時被作者x觸摸?

顯示特定作者提交的文件; 文件可能會多次出現(包括每次作者觸及的文件)。

Get-SvnLogData | 
where { $_.Author -eq 'smith' } | 
select Revision,Date,Path | 
sort -property ` 
    @{ Expression="Path";  Descending=$false }, ` 
    @{ Expression="Revision"; Descending=$true } | 
Format-Table -AutoSize 
# To sort by latest changes instead of by file, 
# swap Path and Revision properties in sort statement. 

問題2:當是最後一次每個文件由作者X感動(順帶多少次在碰)?

顯示特定作者提交的文件;每個文件只出現一次,觸摸次數和上次觸摸日期均爲 。

Get-SvnLogData | 
where { $_.Author -eq 'smith' } | 
group Path | 
select ` 
    @{ n='Last Touched'; e= {@($_.group | sort date -Descending)[0].date} }, ` 
    @{ n='NumberOfTimesTouched'; e={$_.count} }, ` 
    name | 
sort name | Format-Table -AutoSize 
# To sort by latest changes instead of by file change last line to: 
# sort date | Format-Table -AutoSize 
相關問題