基本的に、svn status -uには、特定のユーザーによって変更されたファイルのみを表示して、それらのファイルのみを更新できるようにする必要があります。
4 に答える
このタイプの分析/レポートの質問は、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のネイティブコマンドレットはデータをマッサージするための無数の方法を提供します。ここに、目前の質問に対処するためのいくつかの可能性があります。
質問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が各ファイルに最後に触れたのはいつですか(ちなみに、何回触れましたか)。
特定の作成者によってコミットされたファイルを表示します。各ファイルは、タッチ数と最終タッチ日とともに1回だけ表示されます。
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
ユーザー名'jainendra'でsvnlogコマンドを使用して、以下の例を参照してください。
svn log | sed -n '/jainendra/,/-----$/ p'
ここでsedはLinuxコマンドです。
svn log
(または)の出力を解析してsvn status
、そのユーザーのエントリのみを検索する必要があります。
を使用するsvn log --xml
と、結果に対して XPath クエリを実行するか、XSLT を適用してこのフィルタリングを実行し、目的のユーザー名を含む<logentry>
ノードを持つすべてのノードをキャプチャできます。<author>
使ってみて
svn log --username <username>
指図
また、 --limit 引数を追加して、画面がコミットでいっぱいにならないようにすることもできます。これは、ユーザー名の svn の出力を sed するときに簡単に達成できないことです。
svn log --username ankit --limit 2