2

基本的に、svn status -uには、特定のユーザーによって変更されたファイルのみを表示して、それらのファイルのみを更新できるようにする必要があります。

4

4 に答える 4

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のネイティブコマンドレットはデータをマッサージするための無数の方法を提供します。ここに、目前の質問に対処するためのいくつかの可能性があります。

質問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
于 2012-07-05T20:59:10.527 に答える
0

ユーザー名'jainendra'でsvnlogコマンドを使用して、以下の例を参照してください。

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

ここでsedはLinuxコマンドです。

于 2012-07-02T11:46:46.290 に答える
0

svn log(または)の出力を解析してsvn status、そのユーザーのエントリのみを検索する必要があります。

を使用するsvn log --xmlと、結果に対して XPath クエリを実行するか、XSLT を適用してこのフィルタリングを実行し、目的のユーザー名を含む<logentry>ノードを持つすべてのノードをキャプチャできます。<author>

于 2012-07-02T17:44:04.223 に答える
0

使ってみて

svn log --username <username>

指図

また、 --limit 引数を追加して、画面がコミットでいっぱいにならないようにすることもできます。これは、ユーザー名の svn の出力を sed するときに簡単に達成できないことです。

svn log --username ankit --limit 2
于 2012-07-02T11:48:44.787 に答える