23

Subversion を使用しているファイルを除いて、変更されたすべてのファイルをコミットしたいと考えています。

したがって、シナリオは次のとおりです。

$ svn st
M    file1
M    file2
M    file3
M    file4

私はこのようなことができます:

svn ci -m "Commit 1" file1 file2 file3
svn ci -m "Commit 2" 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 には私の問題に対する組み込みのソリューションがないと思いますが、よくわかりません。他のアプローチはありますか?

4

6 に答える 6

23

オプション 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
于 2012-05-25T12:05:41.007 に答える
14

次のように実行できます。

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

この時点で、次を除くすべてのファイルがコミットされます。file4

于 2012-05-24T14:56:24.070 に答える
5

チェンジリストを使用して 1 つを除くすべてをコミットする:

svn changelist my-list -R .
svn changelist --remove file4
svn ci -m "Commit 1" --changelist my-list
svn ci -m "Commit 2" file4
于 2015-04-28T12:03:57.447 に答える
4

スクリプトを含むファイルを変更リストに追加してコミットすることで、アプローチをいくらか改善できます。コミットする前に、リストを調べて、正しい項目が含まれていることを確認できます。

のオプションを参照svn changelist --helpしてください。--changelistsvn ci --help

于 2012-05-24T14:08:01.603 に答える
4

より複雑なコマンドラインを使用して提案するような解決策を考え出すことができると確信していますがawk、1 つのファイルについて話しているだけなので、

  1. ファイルを一時的な場所にコピーします
  2. svn revert元のファイルを取得するために変更されたファイル
  3. リポジトリ全体をコミットする
  4. 変更したファイルをコピーして戻します

シンプル、簡単、高速。

于 2012-05-24T14:06:33.140 に答える