2012-05-24 17 views
19

Subversionを使用しているファイル以外のすべての変更済みファイルをコミットしたい。多数のファイルが、私は私の仕事を簡素化しようとしているときSVNのファイルを除くすべてのファイルをコミットする

svn ci -m "Commit 1" file1 file2 file3 
svn ci -m "Commit 2" file4 

:しかし

$ svn st 
M file1 
M file2 
M file3 
M file4 

が、私はこのような何かを行うことができます。

だからここ

はシナリオです

svn ci -m "Commit 1" `svn st | awk '{print $2}' | grep -v file4` 
svn ci -m "Commit 2" file4 

このシナリオでは機能しないため、このソリューションは非常に脆弱です。

$ svn st 
M file1 
M file2 
D file3 
A + file4 

SVNには私の問題のための組み込みの解決策がないと思いますが、わかりません。他のアプローチ?

答えて

21

オプション1、AWKを除いてコミットされています

svn ci -m "Commit 1" `svn st | awk '{print $NF}' | grep -v file4` 
svn ci -m "Commit 2" file4 

オプション2、--targets:

svn ci -m "Commit 1" --targets filesToCommit.txt 
svn ci -m "Commit 2" file4 

オプション3、--changelist:

svn changelist my-changelist file1 file2 file3 
svn ci -m "Commit 1" --changelist my-changelist 
svn ci -m "Commit 2" file4 
2

私はあなたが私たちが1つのファイルだけを話しているので、ない

  1. が一時的にファイルをコピーし、なぜ、より複雑なawkコマンドラインを使用して提案しているようにあなたが解決策を打ち出す可能性が確信しているが、場所
  2. svn revert
  3. 元に戻っリポジトリ全体
  4. コピーし
を変更したファイルをコミットし得るために変更されたファイルを

シンプルで簡単、高速です。

4

change listにファイルを追加してコミットすることで、やや改善することができます。コミットする前にリストを調べて、正しい項目が含まれていることを確認することができます。

svn changelist --help--changelistのオプションをsvn ci --helpに表示してください。

13

あなたはこのようにそれを行うことができます。この時点で

svn diff file4 > tmp.patch 
svn revert file4 
svn ci -m "Commit 1" 
svn patch tmp.patch 

すべてのファイルがfile4

+1

'のsvn patch'は1.7で追加されました。この例では、最後の行の代わりに 'patch -p0 -i tmp.patch'を使用しました。 – Rich

0

フィルタリングされたファイルのリストをコミットするだけです。チェンジを使用して1以外のすべてのコミット

svn ci `ls | grep -v file4` 
4

svn changelist my-list -R . 
svn changelist --remove file4 
svn ci -m "Commit 1" --changelist my-list 
svn ci -m "Commit 2" file4 
関連する問題