web-dev-qa-db-ja.com

svn-コマンドライン-すべての変更をコミットするスクリプトまたはコマンドはありますか?

「すべての変更」とは、TortoiseSVNの「コミット」ボタンを意味します。
削除されたファイルを削除し、新しいファイルを追加し、変更をコミットします。
少なくともこれらは私が知っているものですが、他にもあるかもしれません。
(Tortoiseで[すべて]を押して[コミット]を押すだけです。)

RabbitVCSはLinuxで使用できますが、CLIバージョンのcommit == svn commit
Tortoiseのコミットを模倣できる小さなスクリプトまたは何かがありますか?

環境はLinuxでbashプロンプトが表示されます。(SVN1.7.5)

1
Apache

作業ディレクトリのルートに移動します。

_svn add . --force_

(これにより、作業ディレクトリが再帰的にトラバースされ、バージョン管理されていないことが見つかったすべてのファイルに対して_svn add_が実行されます。)

次にこれを行います:

svn rm $( svn status | sed -e '/^!/!d' -e 's/^!//' )

(これは_svn status_を実行します。statusコマンドは、作業ディレクトリで変更されたすべてのリストを再帰的に提供します。奇妙なsedコマンドは、「!」で始まるすべての行を検索します(これがsvnstatusの方法です)。削除されたファイルを示します。))

今やる:

_svn commit_

それは私が本当にこれをすることを勧めるというわけではありません。変更を行うときは、「rmoldfile」ではなく「svnrmoldfile」を使用することをお勧めします。 「svnadd。--force」もそれほど優れていません。テスト中に生成したすべての一時ファイルとオブジェクトファイルをチェックインします。新しいファイルを追加する場合は、「svnaddnewfile」だけを使用することをお勧めします。

私は通常、チェックインの前に「svn status -u」を実行して、作業コピーの変更点を明確に把握します。

Svn rmの部分の答えは次の場所にあります: https://stackoverflow.com/questions/1265122/how-can-i-programmatically-detect-missing-files-in-tar-archive-and-delete -them-f?rq = 1 、これはクレジット http://geryit.com/blog/command-line-Subversion-practices/

0
Wandering Logic

このバッチスクリプトを使用してスケジュールします。それはうまく機能しています。

CD "MyPath"

for /f "usebackq tokens=2*" %%i in (`svn status ^| findstr /R "^\!"`) do (svn del "%%i %%j")

svn add * --depth=infinity --force 

svn commit . -m "My Message"
0