最近、Subversion からバザーのような DVCS に切り替えることについて職場で議論しました。他の人の意見を聞きたいと思います。
私はそうすることへの抵抗を単純な類似点に結晶化することに成功しました。
バージョン管理は、よくも悪くも使用できます。
バージョン管理の「ライトサイド」は、変更を追跡するために使用する場合、何かを壊したときに古いバージョンに戻ることができる場合、および変更を公開して同僚が進行中の作業を見ることができる場合です。 .
バージョン管理の「暗い面」は、それを適切に使用せず、定期的にコミットして作業を「チェックポイント」せず、ローカル チェックアウトに多数の変更を保存し、変更を共有しない場合です。あなたがそれらを作るように他の人と。
転覆は、ライトサイドとダークサイドの両方を比較的難しくします。すべての基本は機能しますが、マージはまったく簡単ではないため、(タグ付けとリリースを超えて) Subversion でブランチを実際に使用する人はほとんどいません。Subversion 自体でのサポートはひどいもので、svnmerge のようなスクリプトで改善されていますが、それでもあまり良くありません。そのため、最近では、優れた分岐とマージのサポートが共同開発に必要であるとますます考えられているため、Subversion は一致しません。
一方で、「ダークサイド」を追うのもかなり大変です。ときどきローカルの変更をオンライン リポジトリにコミットせず、行ったことを覚えていない簡単な編集でコードを壊してしまうことで、一度噛まれるだけで済みます。そのため、定期的にコミットすることになり、人々はあなたが行っている作業を見ることができます。
したがって、最終的に Subversion は、ベスト プラクティスを実装するのは少し面倒ですが、物事を大きく間違えることを難しくする、中道の優れた VCS になります。
対照的に、DVCS を使用すると、完全にライト サイドまたはダーク サイドに移行するコストが大幅に低くなります。これらの最新の VCS システムを使用すると、分岐とマージがはるかに簡単になります。しかし、分散された側面により、自分のマシン上の一連のローカル ブランチで作業することが容易になり、作業のチェックポイントを設定するために必要な詳細なコミットが提供されます。おそらく変更を公開することなく、他の人が確認、レビュー、共同作業できるようにする必要があります。変更をローカル ブランチに保持し、公開しないという摩擦は、一般に、公開されているサーバー上のブランチで公開するよりも少なくなります。
簡単に言うと、ここで質問があります。職場の開発者に DVCS を提供した場合、彼らがそれを使用して「ライト サイド」に行き、変更を中央の場所で定期的に公開し、理解してもらうにはどうすればよいでしょうか。まだ共有したくない彼らの 1 週間のローカル ハックは、最初の機能が休暇中に他の開発者が機能を完成させるために使用できるものかもしれませんか?
DVCS のライト サイドとダーク サイドの両方に簡単にアクセスできる場合、どうすればそれらをダーク サイドから遠ざけることができますか?