2009-07-13 8 views
4

パスの各サブフォルダでコマンドを実行する最も簡単な方法は何ですか?この場合、私はリポジトリのすべてのディレクトリに対してsvn cleanupを実行する必要があります。各サブフォルダのrunコマンド

答えて

3

このような場合、作業コピーを削除して再チェックアウトするほうがずっと簡単です。ローカルで変更があった場合は、まず変更されたファイルを別の場所にコピーします。

しかし、Can's answerは、SVNに大きな問題がない限り、あなたのケースで動作する可能性があります。まだ問題が残っているルートフォルダから開始するので、おそらく数回実行する必要があります。その場合、for /rでは実行できないが、階層内の最下位のディレクトリからクリーンアップを開始することができるような、何らかの種類のポストオーダートラバーサルが必要です。

あなたはまた、SVNのstatekeepingのディレクトリは.svnを除外する必要があるだろう:帰りがけ順については

for /r /d %i in (*) do if NOT %i==.svn svn cleanup %i 

、あなたは少しバッチビルドすることができます。以下のツリーで

@echo off 
call :recurse "." 
goto :eof 

:recurse 
pushd %1 
if not %~1==.svn (
    for /d %%i in (*) do call :recurse "%%i" 
    echo svn cleanup %~1 
) 
popd 
goto :eof 

を:

 
a 
├───.svn 
├───a1 
│ └───.svn 
└───a2 
    └───.svn 
b 
├───.svn 
├───b1 
│ ├───.svn 
│ ├───b11 
│ │ └───.svn 
│ └───b12 
│  └───.svn 
└───b2 

これは、次のような出力が得られます。

 
svn cleanup "a1" 
svn cleanup "a2" 
svn cleanup "a" 
svn cleanup "b11" 
svn cleanup "b12" 
svn cleanup "b1" 
svn cleanup "b2" 
svn cleanup "b" 
svn cleanup "." 

これは、わかりますように、最も低いディレクトリが最初に処理され、.svnディレクトリがスキップされることを確認します。使用する場合はechoを削除してください。これにより、問題が解決される可能性があります。多分。

ルートフォルダに
1

svn cleanupは自動的にサブディレクトリに再帰します。なぜ私はその特定のコマンドのために手動で再帰する必要があるのか​​分かりません。

+0

: >のsvnクリーンアップ のsvn:ディレクトリ 'において、メインの\ create_course' のsvn:エラー処理コマンド 'コミット' の 'メイン\ create_course' のsvn:実行:ワーキングコピー 'メインは' SVNをロック'svn cleanup'を実行するとロックが解除されます(詳細については、 'svn help cleanup'と入力してください) 問題のあるフォルダに移動してsvnクリーンアップを実行すると、メインのsvnクリーンアップを実行するときにさらに進みます。 :S – svandragt

+0

興味深いですが、クリーンアップのバグのようです。それがWindowsの実装に固有のものかどうかは疑問です。 –

+0

グレッグ:私は何度も同じような問題を抱えていました。ときにはsvnが作業コピーの半分を破棄しているようで、最も簡単な修正は再チェックアウトだけです。私が最近遭遇したケースのほとんどはSVNKitの欠陥でしたが、 64ビットのSubclipseでは、それほど多くの選択肢はありません:/ – Joey

7

forコマンドは、あなたが探しているものです。正確な構文タイプを読むためにfor /?

たとえば、現在のディレクトリにあるすべてのサブディレクトリの名前を表示するには、次のように入力します。

for /d /r %i in (*.*) do @echo %i 

echo%i部分は、あなたのケースに合わせて変更する必要がある部分です。

+0

これは、ディレクトリツリーの先行走査を行うという不運な副作用があります。トップレベルのクリーンアップは、低レベルのクリーンアップが失敗する前に失敗します。つまり、問題を解決する前に、そのラインを数回チューニングする必要があります。 – Joey

関連する問題