2012-05-03 16 views
3

現在作業中のファイルにローカルで変更されたファイルのリストがあります。変更されたファイルは約50件あります。コピーSVN変更されたファイルのみを別のディレクトリにコピー

私はこれを行うことによって、これらのファイルのリストを取得することができます。

svn st | ack '^M' 

は私がbackupと呼ばれる別のディレクトリにこれらのファイルとのみこれらのファイルをコピーすることができます方法はありますか?

+0

あなたのsvnパイプラインによって生成される出力の小さなサンプルを表示するには、あなたの投稿を編集してください。それから、簡単に手助けすることができます。あなたは1ライナーとしてそれをやることができるでしょう。がんばろう。 – shellter

答えて

4

と仮定すると、ACKはgrepのようなものです...あなたのような何かを行うことができます:私はコメントとしてこれを投稿したい

 
cp `svn st | ack '^M' | cut -b 8-` backup 

を...私は現在、SVNのディレクトリに、このコマンドを使用することができ、...のコメントでWindows 8では

+0

これを実行して、ファイルが存在するディレクトリを削除することは可能ですか?たとえば、変更されたファイルが '/ images'にある場合、ファイルを'/backup'ディレクトリにコピーするときに '/ images'フォルダを作成/コピーできますか? – crmpicco

+0

何らかの理由で上記のmacコマンドで動作しませんでした。私は次のsvn status | grep '^ [ADMR]' |カット-b 8- | xargs -I '{}' cp {}/directory/ –

+3

@forsvarir:バッククォート(最低でもbash)は、$() - 構造体(btwはネストされた式を許します)によって交換できます。私は "ディレクトリを維持する"問題を解決しました: 'for $ in s $(svn st | grep^[MA] | cut -b 8-); do x = "b/$(dirname $ i)"; mkdir -p $ x; cp "$ i" "$ x"; done'。お役に立てれば。 –

1

これは、(bashの)だろう。

#!/bin/bash 
set -eu 

# for each modified file 
for f in $(svn st| awk '/^M/{print $2}'); do 
    # create a directory under backup root and copy the file there 
    mkdir -p .../backup/${f%/*} && cp -a $f .../backup/$f 
done 
+0

このコードを実行するとこのエラーが発生します。申し訳ありませんが、私はbashスクリプトに精通していません。 'copy_modified_files.sh:行5:突き合わせを探している間に予期しないEOF) '' – crmpicco

+0

@crmpicco - 前にかっこがありませんでした '; do ' – bobah

2
svn status | grep '^[ADMR]' | cut -b 8- | xargs -I '{}' rsync -R {} /directry/ 
+0

私はこれを試しましたが、ファイルが入っているディレクトリは維持されません。したがって、/inc/picco.txtを持っていれば 'inc /'を作成しません。 – crmpicco

+0

rsync -Rはディレクトリ構造を保持する必要があります。私はスクリプトを更新しました。これがあなたのために働いている場合は、私にお知らせください。 –

1

をバッククォートをエスケープする方法がわからない:

私の作品
(FOR /F "tokens=2 delims== " %i IN ('svn st ^| findstr "^[ADMR]"') DO @echo %i & echo f| xcopy /f /y %i c:\projects\backup\%i) 
+0

これを実行しようとしましたが、ディレクトリにバグがあります – Dmitriy

0

svn status | grep ^M | awk '{print $2}' | xargs -I '{}' cp --parents {} /backup/ 
関連する問題