2

出力がxml形式の単一のファイルにあり、リビジョン、日付、作成者、ファイル名とパス、および行のテキストが含まれる、ブランチ内のすべての非バイナリファイルの完全に再帰的なsvn Blameレポートを取得するにはどうすればよいですか?ファイル自体?出力全体を 1 つのファイルにする必要があります。これは、CCNet インスタンスを介してビルドの一部として実行されます。

利用可能なツールは、nant と nantcontrib の最新の安定版リリース、msbuild、および最新のコマンド ライン svn です。

私が遭遇した問題のいくつかを次に示します。 コマンド ラインの svn flame コマンドは、ディレクトリの再帰をサポートしていません。Blame の --xml オプションには、各行の実際のテキストは含まれていませんが、それ以外はすべて含まれています。デフォルトでは、nantcontrib は --quiet パラメーターを渡します (タスク参照とは対照的に)。これは、blame コマンドではサポートされていません。Nantcontrib svn タスクが --xml パラメーターを受け入れない場合があります。

4

2 に答える 2

2

簡単な答えは、これを行う簡単な方法はないということです。最善かつ最も正しい方法は、必要な機能を備えた独自の svn クライアントを作成する (または既存のクライアントを拡張する) ことです。些細なことではありません。

それを行うには間違った方法もあり、これにはコードの記述も含まれます。これをしないでください

探す 。-タイプ f | grep -v .svn | xargs svn 非難 > line_data
探す 。-タイプ f | grep -v .svn | xargs svn --xml 非難 > xml_data

svn2 つのコマンドを一緒にスクリプト化して 2find回実行しないようにすることもできますが、それでも非常に遅くなります。さらに厄介なことに、2 つのファイルを自分で解析して、実際のソース行を xml データに追加する必要があります。

悲しいことに、これは標準の svn クライアントで必要なもののサポートの範囲であり、より良いことを行う他のクライアントを見つけることができません (サポートしていないクライアントもありますblame)。

于 2009-01-05T21:13:43.553 に答える
1

お使いのOSがわかりません。ただし、単純な FOR ループとコマンド「svn ls -R」を使用して、ブランチ (workspace/url) 内のすべてのファイルを再帰的にリストし、それを「svn flame --xml」にパイプすることができます。

SVN コマンド ライン プロンプトでこれを試してみましたが、問題なく動作します (Windows XP、SVN 1.4.4)。私が使用したコマンドは次のとおりです。

FOR /F "usebackq delims==" %i IN ( svn ls -R http://myurl/mybranch) DO @svn flame --xml %i

注: ワークスペース (ブランチ ルートを反映) でこのコマンドを入力し、上記のコマンドで URL の代わりに 'svn ls -R` を使用すると、「url が見つかりません」タイプのエラーを回避できます。

お役に立てれば。

于 2009-01-15T09:07:39.713 に答える