小さなチームを CVS/SVN から git に移行することを正当化するよう求められました。
これまでのところ、私の読書から、次の 3 つの主なメリットを特定できます。
- スピード
- 簡単な分岐
- 分散
- SVN が提供しないその他の機能 (部分的なファイルのコミット、ステージングなど...)
スピード
その速度のために git を支持するいくつかの議論がありますが、Git の優れた速度について言及することに対する一般的な反応は、3 秒と 13 秒の違いは無視できるというものです。
実際の例:
日中はたくさんの仕事をして、夕方に家に帰る前に安定したものをコミットします。
数百のファイルを追加し、既存のファイルを変更、移動、リファクタリングした大きなコミットでは、コートを着て机を片付ける前に、CVS がコミットを実行します。これは git とどう違うのでしょうか?
簡単な分岐
Git のブランチ機能は、その強力な機能の 1 つとして多くの人に称賛されています。ただし、CVS/SVN での分岐は多くのエンジニアにとって十分であるように思われます。特に最新の IDE では、どの RCS が実際に使用されているかに関係なく、全体のエクスペリエンスとワークフローがほぼ同じになります。
アイデアを試してみたいときは、Eclipse で自分のプロジェクト ノードを右クリックし、[別のブランチに切り替える] を選択して [新規] を選択し、名前を入力して、「メインラインを汚染する」ことなくコミットして更新します。 CVS らしいです。このブランチの新しいアイデアが安定していて良いと判断したら、プロジェクトをもう一度右クリックし、「別のブランチまたはバージョンとマージする」を選択し、HEAD を選択します。HEAD に戻りますが、作業の変更が実装されています... 方法gitは私の経験を改善しますか?
真の分散
分散型 RCS を使用する主な利点は、災害復旧にあるようです。ただし、同様のプロパティは CVS と SVN にも固有のものです。これは特に、標準的なプラクティスの使用法に当てはまります。
今では、朝起きて最初にすることの標準的な方法は、夜間に行われた変更がないかリポジトリをチェックし、必要に応じて更新/マージを行うことだと考えています。朝の地面、私は失われただろう...まあ...何もない。私は新しいリポジトリを作成し、私のローカル ファイルをサーバーにコミットします。他の 5 人の従業員も同じことを行います。マージの手間が少しかかるかもしれませんが、ローカルの変更をコミットしていた場合よりも多くはありません。すでに存在するサーバーであり、私たちは再び離れています。大きな問題ではない。
GIT ステージング
よく言及されるもう 1 つの機能は、ステージング エリアです。これは SVN/CVS に相当するものはなく、開発者が「自分のコミットを作成」して、必要なファイルに含めることができます。
多くの場合、これについて言及するとき、私は単純にチェンジセットを思い浮かべます。ステージングエリアはどのように異なりますか?
実際、Git の使用にはいくつかの欠点があります。
- ローカル コミットは、コードを失う可能性が高いことを意味します。私の開発マシンは SVN サーバーよりもはるかに脆弱であり、共通リポジトリにプッシュする前に作業が危険にさらされるからです。
- ほとんどの開発者はオフラインでプロジェクトに取り組むことはないため、オフラインでの作業には目に見える利点はありません。
git に関する基本的なことを見逃しているか誤解しているように感じ、スイッチのビジネス ケースを正当化するのに苦労しています。関連する問題の理解を深めるために、特に git が単純に段階的に優れたソリューションではなく、CVS/SVN よりも根本的に優れたソリューションになる具体的なユースケースを特定できる場合は、ご意見をいただければ幸いです。