私は、コミットしたいすべてのファイルに触れなければならない git の方法に非常に慣れており、その間に diff を再確認しました。現在、仕事でsvnを使用する必要があり、誤ってコミットし続けています。次のコミットに含める必要があるすべてのファイルを明示的に伝える必要があるという点で、Subversion を git のように動作させる方法はありますか?
6 に答える
別の方法は、使用できない理由がない限り、職場でgit-svnブリッジを使用することです。実際にGitを使用していることを知っておく必要があります。このようにして、実際にSubversionを使用しながら、Gitのすべてのメリットを享受できます。
コマンドラインでファイルを指定します
svn commit-m"マイコミットメッセージ"folder/ file1.c
コミットするファイルのみをリストするチェンジセットを作成してから、チェンジセットをコミットすることができます。変更セットを使い終わったときに変更セットを削除することに熱心で、変更セットなしで決してコミットしない場合は、それでうまくいくと思います。より簡単な解決策は、グラフィカル クライアント (TortoiseSVN などですが、同様の機能を備えたすべてのプラットフォーム用のものがあります) を使用することです。このクライアントは、ログイン メッセージの入力を求められたときにコミットされるファイルのリストを表示します。次に、それらを確認せずに「コミット」をクリックした場合、それは何をするかを教えてくれなかったからではありません:)
Roryの答えに従うために、明示的なファイルコミット動作を強制したい場合は、コミットメッセージ以外に少なくとも1つの引数があることを確認し、そうでない場合はエラーを返すバッチまたはシェルスクリプトを作成できます. これにより、少なくともファイル名を明示的に入力するように促すことができます。
とにかくコミットする前に、私は常に svn stat と diff を実行します。そのため、stat は通常、まだチェックインしたくないことがあるかもしれないことを思い出させてくれます。
私は通常、コミットするファイルのセットを手動で選択できる Emacs などの IDE からコミットします。
Subversion は、デフォルトで思いどおりに動作します。追加、削除、または変更された追加項目はステージングされ、コミットするファイルを指定する commit コマンドを使用するまでコミットされません。コマンドラインを使用していて、他のパラメーターなしで「svn commit」を実行している場合、問題が何であるかがわかります。その場合、他の人が提案したチェンジセット機能を使用し、コミット時間をセルフコードとして使用します-すべての変更を一瞥する時間を見直し、どれが入るか、どれが入らないかを決定します。
また、部分的なコミットのみを行うのは悪い習慣であり、ビルドを中断する最も一般的な方法の 1 つであるため、共有ブランチにいる場合は自分が何をしているのかを非常に意識している場合にのみ行う必要があることも付け加えておきます。予想外に相互に関連する変更が同じコミット内に含まれていないことに注意してください。
個別にコミットしたい変更がある場合に私が行ったり他の人に勧めたりすることは、その時点でコミットすることに興味がない変更に対してパッチまたはパッチのセットを作成し、それらの同じファイルを元に戻すことです私の作業コピー。作業コピーにはコミットする変更のみが含まれているので、手動テストまたは単体テストを実行して再構築および正確性を検証し、これらすべてに合格した場合にのみ、セルフ コード レビューとコミットを行います。特に複雑な変更を行っている場合は、この方法が大規模なグループとやり取りする最も安全な方法だと思います。このプロセスは、svn がクライアント側のシェルビング機能をサポートして、変更セットに似た名前の一時ストアに 1 つのコマンドで変更を追加することで、より簡単にすることもできます。
また、ところで、TortoiseSVNを使用すると、特定のコミットに入る変更セットとチェリー ピッキング ファイルの管理がはるかに簡単になります。Windows を使用している場合は、その理由から確認することを強くお勧めします。