2012-07-02 29 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 
相关问题