3

Powershell を使用してコードをチェックアウトするためのビルド スクリプトを作成しようとしています。作業コピーに加えられた変更を、SVN リポジトリからの適切な変更に置き換えることができる必要があります。これには、リポジトリでは削除されたが作業コピーでは削除されていないファイルの削除も含まれます。

残念ながら、ビルド スクリプトを実行するたびに 10 GB のコードすべてをチェックアウトするのは効率が悪いため、クリーンなチェックアウトを行うことはできません。どうすればいいですか?

私はこれらの行に沿って何かを試してきました:

&$SVN_EXE revert $workingPath
&$SVN_EXE update $workingPath
$x = &$SVN_EXE status $localPath --no-ignore |  where {$_ -match "^[\?I]"} | %{$_ -replace "^[\?I]",""} # get the status, get any items with a ? and strip them out
$x | %{$_ -replace "[`n]",", "} # Replace newlines with commas
Remove-Item $x # Remove all the unversioned items

行番号 3 の出力を $x に格納できないようで、残りの部分でそれを行う方法があるかどうかはよくわかりません。

これが適切な方法であるかどうかはわかりませんが、そうである場合、SVNステータスからの出力を保存および解析できないようです。

誰か提案はありますか?ありがとう!

4

4 に答える 4

6

追跡されていない無視されたファイルを作業ディレクトリから削除したい場合は、次のようにしてみてください。

svn st --no-ignore | %{ if($_ -match '^[?I]\s+(.+)'){ $matches[1]} } | rm -whatif

-whatif意図したとおりに動作していることを確認したら、 を削除します。

于 2012-01-31T19:36:38.637 に答える
0

私は以下を使用しました:

&$SVN_EXE revert $workingPath
&$SVN_EXE update $workingPath
&$SVN_EXE status $localPath --no-ignore |
                Select-String '^[?I]' |
                ForEach-Object {
                    [Regex]::Match($_.Line, '^[^\s]*\s+(.*)$').Groups[1].Value
                } |
                Remove-Item -Recurse -Force -ErrorAction SilentlyContinue
于 2012-01-31T17:04:47.183 に答える