現在作業中のファイルにローカルで変更されたファイルのリストがあります。変更されたファイルは約50件あります。コピーSVN変更されたファイルのみを別のディレクトリにコピー
私はこれを行うことによって、これらのファイルのリストを取得することができます。
svn st | ack '^M'
は私がbackup
と呼ばれる別のディレクトリにこれらのファイルとのみこれらのファイルをコピーすることができます方法はありますか?
現在作業中のファイルにローカルで変更されたファイルのリストがあります。変更されたファイルは約50件あります。コピーSVN変更されたファイルのみを別のディレクトリにコピー
私はこれを行うことによって、これらのファイルのリストを取得することができます。
svn st | ack '^M'
は私がbackup
と呼ばれる別のディレクトリにこれらのファイルとのみこれらのファイルをコピーすることができます方法はありますか?
と仮定すると、ACKはgrepのようなものです...あなたのような何かを行うことができます:私はコメントとしてこれを投稿したい
cp `svn st | ack '^M' | cut -b 8-` backup
を...私は現在、SVNのディレクトリに、このコマンドを使用することができ、...のコメントでWindows 8では
これを実行して、ファイルが存在するディレクトリを削除することは可能ですか?たとえば、変更されたファイルが '/ images'にある場合、ファイルを'/backup'ディレクトリにコピーするときに '/ images'フォルダを作成/コピーできますか? – crmpicco
何らかの理由で上記のmacコマンドで動作しませんでした。私は次のsvn status | grep '^ [ADMR]' |カット-b 8- | xargs -I '{}' cp {}/directory/ –
@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'。お役に立てれば。 –
これは、(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
svn status | grep '^[ADMR]' | cut -b 8- | xargs -I '{}' rsync -R {} /directry/
私はこれを試しましたが、ファイルが入っているディレクトリは維持されません。したがって、/inc/picco.txtを持っていれば 'inc /'を作成しません。 – crmpicco
rsync -Rはディレクトリ構造を保持する必要があります。私はスクリプトを更新しました。これがあなたのために働いている場合は、私にお知らせください。 –
をバッククォートをエスケープする方法がわからない:
私の作品(FOR /F "tokens=2 delims== " %i IN ('svn st ^| findstr "^[ADMR]"') DO @echo %i & echo f| xcopy /f /y %i c:\projects\backup\%i)
これを実行しようとしましたが、ディレクトリにバグがあります – Dmitriy
:
svn status | grep ^M | awk '{print $2}' | xargs -I '{}' cp --parents {} /backup/
あなたのsvnパイプラインによって生成される出力の小さなサンプルを表示するには、あなたの投稿を編集してください。それから、簡単に手助けすることができます。あなたは1ライナーとしてそれをやることができるでしょう。がんばろう。 – shellter