1

私は通常、プロジェクトで大量のコードを処理しますが、データをパッチにバックアップする必要がある場合があります。

svn diff > /backups/assignment-XX_diff-YY.patch

次に、ローカルの作業コピーを元に戻して更新します。

svn revert -R . && svn up

次に、他の割り当ての作業に進み、コミットされたら、ローカルでクリーンアップして元に戻し、以前に行っていた作業からパッチを再適用します。

svn revert -R .
svn up
patch -p0 < /backups/assignment-XX_diff-YY.patch

私が気づいたことの1つは、新しいファイルを作成したら、そのファイルを追加することです。例:

touch newFile.cpp
svn add newFile.cpp

新しく追加したファイルとその内容は、作成したパッチに含まれており、パッチを適用するとファイルが再作成されますが、パッチを適用しても「追加済み」ステータスは自動的に設定されません。これにより、コミットする準備ができているパッチを適用することになりましたが、「追加された」ファイルではなく、「変更された」ファイルのみがコミットされます。また、「新しい」ファイルがすでに存在している場合は、パッチ全体がEOFに追加され、それらが壊れます。

要約すると、ローカルの作業コピーにパッチを適用するときに、新しいファイル/追加されたファイルに対してコマンドをpatch自動的に発行することは可能ですか?svn add

4

2 に答える 2

4

はい、svn1.7newコマンドで可能svn patchです。

svn patch /backups/assignment-XX_diff-YY.patchの代わりに実行しますpatch -p0 < /backups/assignment-XX_diff-YY.patchApache Subversion 1.7リリースノートから:

svn patchは、サードパーティのパッチツールと同じように、既存のファイルにunidiffの変更を適用します。また、新しく作成されたファイルをバージョン管理に追加し、パッチ適用後に空のままになっているファイルとディレクトリを削除します。

于 2012-05-12T11:25:45.223 に答える
0

新しく追加されたファイルをパッチに含めるには、-show-copies-as-addsオプションを使用できます

svn diff --show-copies-as-adds> TARGET_PATCH_FILE

于 2021-11-15T03:52:11.643 に答える