分散バージョン管理システム(Mercurial、gitなど)は、それを使用した経験(適切な条件下:生産性の向上、コードベースの安定性の向上など)からのみ開発者にプラスの影響を与えると言う人もいます。しかし、どのような状況で顧客(つまり、ソフトウェア開発ライフサイクルの結果のオブザーバー)は、CVCSとDVCSを使用することとの違いがあると言うことができますか?.
DVCSの採用時に顧客が違いを「感じている」という経験的証拠を持っている人は誰でも、ホイップクリームとチェリーを上に載せた大きなダブルチョコレートクッキーを手に入れます。
注:「違いを伝える」とは、「DVCSが関与していたことを知っている」という意味ではなく、リモートで「DVCSが何であるかを知っている」という意味でもありません。
プログラマーがより良い仕事をすることを可能にする間接的なより良いツールに加えて、より直接的な効果があるかもしれないいくつかのケースがあります。別の会社のために開発していて、何らかの理由で一方のイントラネットに他方からアクセスできない場合は、ノートブックに完全な履歴を持つ作業バージョン管理がある顧客サイトで何かをデバッグして修正する必要があるときはいつでも非常に役立ちます。
それは私に数回起こりました。あるケースでは、同僚が問題をデバッグするために顧客サイトにアクセスして修正しましたが、修正をその間に行った他の変更と統合する必要があったため、変更されたソースをそこに送信してファイル共有サーバーに送り返しました。ノートブックにかなり最近の情報源があり、返品後に変更を統合することで十分だった他のケースでは、DVCSを使用した方が確かに簡単でした(顧客は少なくとも4時間の移動で、場合によっては飛行機で移動したため、不可能でした一日の終わりに私たちのオフィスに立ち寄ります。)
絶対に。
利用可能な最高のツールを使用するプログラマーは、より良い最終結果を作成します。 DVCSは、非常に優れたツールであり、非常に大きなメリットがあります。
DVCSをソース管理なしと比較することは、ペイントを泥と比較することに似ています。あなたの家の壁に高品質のペイントを使用する画家は、泥を使用する画家よりもはるかに優れた仕事をします。
DVCSを非分散VCSと比較することは、高品質のペイントと低品質のペイントを比較するような明確な方法ではありませんが、違いはまだあります。
DVCSを使用すると、コードの記述が少し速くなり、バグもわずかに少なくなります。効果がどれほど目立つかは、コードの複雑さによって異なります。
単純なプロジェクトで自分で作業しているプログラマーは、複雑なプロジェクトで作業しているプログラマーのチームよりもメリットが少なくなります(ただし、それでもある程度は得られます)。
DVCSをVCSよりも優れたものにする大きな機能はありませんが、小さな機能は100万あります。数年前、それらが新しく、おそらくバグがあったとき、それはDVCSの使用に反対する正当な議論でしたが、今日、ソフトウェアは試され、真実です。
高品質のペイントは安価なペイントよりも高価です。しかし、VCSに対するDVCSの利点の1つは、高品質のツールを使用する方が安いことです(時間単位で支払われると仮定)。 DVCSは、関与するすべてのプロジェクトに使用する必要があります。プロジェクトでDVCSを使用するのはあなただけです。