web-dev-qa-db-ja.com

分散型バージョン管理システムのビジネスケース

私は検索しましたが、git/Mercurial/bazzrシステムが集中型システム(Subversion、perforce)より優れている理由businessを見つけることができませんでした。

DVCSを非技術者に販売しようとした場合、DVCSにどのような議論を提供しますか利益の増加

私はまもなくマネージャにgitを売り込みます。Subversionリポジトリを変換するのにしばらく時間がかかり、smartgitライセンスの購入にはいくらかの費用がかかります。

編集この質問を集中型と分散型の一般的な議論にしようとしましたが、必然的にgit vs Subversionになりました。確かに、Subversionより優れた集中型システムがあります。

26
Keyo

うーん、マネージャーだった私には、これに対する2つの即座の「ひざまずく」反応があります。

  • まだ理由がないのに、なぜトレンディになる以外にgitを売り込んでいるのですか?
  • 同様に、Subversionはどのように失敗して、交換が必要ですか?

私は実際には否定的ではありません状況に応じて)作成されるケースがおそらくあると思いますが、ケースが単にgitがSubversionより「優れている」場合、実際にはありません。

また、デメリットを列挙できる必要もあります。移行とリツールのオーバーヘッドはすでに特定済みです-他に何が問題ですか?例えばニースの中央にバックアップされたリポジトリはどうなりますか?継続的インテグレーションビルドサーバーとどのように統合しますか(ない場合は、gitを忘れて最初にソートします)。セキュリティと追跡-SVNは適切なログインと権限で実行されます。

私の考えでは、利点は、柔軟性、マージの改善、ビルドを中断することなくローカルコミットを実行できることなどです。欠点は、制御の欠如と同じ柔軟性です。

あなたがやりたいことは、「より良い」Subversionクライアントとしてマシンのローカルでgitを実行することだけかもしれません(私はMercurialを使用してこれを行うことを考えています)。

うーん、おそらくこの全体の答えは本当にコメントですか?ビジネスケースの特定を支援できるかどうかを確認するには、Subversion(環境内)でgitのケース---(ここ(質問内)を作成する必要があります。


FWIW、私は、リポジトリの特定のインスタンスをトランク/参照ソースとして簡単に指定できることを知っています。さらに、それは、ビルドサーバーに接続する方法です。違いは、DVCSでは、管理上の決定よりも、アーキテクチャに固有の何か。

23
Murph

すべての新機能を分岐して後でマージできるため、迅速かつ簡単な分岐とマージにより、開発者はコードをより生産的にすることができます。開発プロセスをよりスムーズに進めます。また、分散型の性質により、すべての開発者がコードの完全なコピーを持つことができるため、すべてのコードをダウンさせる集中サーバー障害の心配はありません。おそらくもっと多くの理由がありますが、これら2つは、Gitを使用する最大の理由です。

14
mbreedlove

開発者が一人で作業している場合でも、バージョン管理が生産性(したがって利益)を高めるケースを作ることができると思います。

優れたDVCSは、チームの一部として作業している場合でも、同じ生産性の利点を認識します。各開発者は、バージョン管理で作業することのすべての利点を得ることができます-頻繁なコミット、ロールバック、物事の遊びなどを行うことができます-競合を心配することなく変更をプッシュする準備ができるまで、他の開発者が行っていることと一緒に。

8
Anon.
  • バグごとのブランチ
  • 差分の待ち時間を短縮しました。
  • veryを使用して、ピアレビューの際にブランチの履歴をすばやく任意に移動できます。
  • 集中型サーバーにアクセスできない場合でも、履歴全体にアクセスできます。オフィスにいないため、電源が切れただけで、ラップトップのバッテリーは動作しています...

これらにより、ソロとチームの両方でより効率的に作業できます。より効率的な作業=開発時間の短縮=製品化までの時間の短縮=利益。

4
Frank Shearar

自分のブログにリンクすることを許してください。しかし、私はこの非常に主題について記事を書きました:

関連がないと思われる場合は、遠慮なく投票してください。

簡単に言えば、DVCSはブランチモデルを簡単にし、開発者の大規模なグループが互いにつま先を踏まないようにして、生産性と毎日のビルド品質の両方を向上させます。バージョン管理の面倒なコラボレーション部分をローカルリポジトリで行うことができるため、中央リポジトリがよりクリーンで高品質になります。また、分岐するタイミングに関する決定は効率に大きな影響を与える可能性があります。たとえば、ある部門が2.0で作業を開始する準備ができていて、1.0がまだ他の部門によってクリーンアップされている場合などです。 DVCSでは、これらの決定を委員会ではなくローカルレベルで行うことができます。

3
Karl Bielefeldt

DVCSに対する私の議論は次のとおりです。

  • 分岐は中断されないため、機能の開発や既存の製品へのパッチ適用の維持における摩擦が少なくなります。摩擦は時間内にお金がかかります。

  • 最新のシステムに移行すると、最先端の開発者がより魅力的になり、より良い製品の文化につながり、企業はより多くの製品を販売できるようになります。

  • 非ネットワークコミットは高速であり、開発者は頻繁にコミットできるため、細かいバグの検出と分析につながります。

基本的には、摩擦を減らすことです。これには用語があります: Muda 。摩擦が多いほど、物事を実行するのが難しくなります。より多くの痛み、より少ない仕事、より少ない利益。

2
Paul Nathan

私がグランドスタンディングであることをお詫びしますが、ビジネスケースを不明確な言葉で説明することはできません。

SVNは開発者の生活を悲惨にします。そして、それはソフトウェアビジネスを悲惨なものにします。

... DVCSを使い始めるまで多くの人が気付かない方法で。 これは、実行可能な最も重要なビジネスケースです。どうして?まあ、優れた開発者を見つけて維持するコストと比較すると、DVCSに切り替えるコストはほとんどありません

以下を検討してください。

  • SVN(および他のほとんどのCVCS)での最も重要な操作以外はすべて、ネットワークアクセスが必要です。ほとんどのDVCSでは、ネットワークアクセスは、Pushまたはpull操作を実行したときにのみ発生します。これは、重要なコマンドがslowであることを意味します。コマンドが永遠にかかるときはどうしますか?待っている間、私は個人的にprogrammers.seまたはハッカーのニュースを閲覧します。簡単に言えばDVCSを使用すると、プログラマーは好きなことに集中することができます:会社のソフトウェアの作成
  • SVNは、刑務所がシャワーに石鹸を落とすことをサポートするのとほぼ同じように、分岐をサポートしています。したがって、SVNは、開発者が絶えずお互いを争って変更を加えることを強制します
  • SVNがダウンすると、ダウンします。開発者ができるとしたら、開発者が仕事をするのはひどく難しくなります。したがって、SVNは、開発者が100%バグのないインフラストラクチャに依存するように強制します
  • 最近、gitは急速にマインドシェアを獲得し、SVNは急速にそれを失っています。 SVNよりもDVCSを使用するメリットがない場合、なぜプログラミングコミュニティができるだけ速く変化するのですか?

このすべては何に相当しますか? DVCSに後でSVNを好む正直な試みを与えられた開発者にまだ会っていません。もう1つの厄介な太字のステートメントを作成できるとしたら、SVNは、開発者が使用するように強制する「必要悪」です。Gitは、開発者をより生産的で幸せにするツールです

(太字のステートメントは、焦点を当てるべき特定のステートメントであることを指摘しておきます。残りのステートメントは、コンテキストを提供するだけです。)

2
Jason Baker

私が考えることができる唯一のことは、gitはネットワーク接続なしで動作するということです。それ以外のすべてのものは、かなり長い間、サブサーションまたはパーフォースを使用するテクニカルユーザーに販売することが難しい場合さえあります。

1
Brainlag

トラブル時の違い表示

10年前のリポジトリを移植してから6か月前にgitに切り替えました。

これまでのところ、少し実験した結果、次のことがわかりました。

  • 分岐とマージはほとんど痛みがありません。これにより、互いにつま先を踏まなくても、個別の機能とバグ修正に取り組むのがはるかに簡単になります。また、特定のバグ修正を他の場所にも簡単に適用できます。

  • 設計によってより堅牢-中央サーバーが利用可能であることに100%依存することはありません。信頼できない場合は、一時的にホットクローンとして任意のクローンを昇格することができます。これにより、重大な障害点が取り除かれます。SVNサーバーが何らかの理由でダウンした場合、誰もSVNの作業を行うことができません。何らかの理由で中央のgitリポジトリがダウンした場合でも、ローカルで作業およびプッシュ/プルを行って、コミットが確実にレプリケートされるようにすることができます。まさにこの目的のために、複数のオフサイトリポジトリを持つこともできます。

  • リポジトリの相互作用が簡素化されます。 CVSの場合、基本的に、情報が必要なときにいつでもアクセスできる必要がありました。 gitの場合、リポジトリ全体がローカルで利用できるため、多くのことをより高速に実行できます。

ですから、毎日の生活にはそれほどメリットはありませんが、何かが正常に機能していない瞬間は明らかです!

したがって、私はあなたのビジネスケースについて、災害が発生したときに何をするかを見ることをお勧めします...

1
user1249

分岐とマージの容易さが最も具体的な理由ですが、誰かを説得するには、それによって物事がどのように改善されるかについて具体的な例を示す必要があります。

アプリのパフォーマンス改善に取り組んでいるプログラマーが何人かいて、彼らは実験段階にあり、彼らが書いているコードがマスター/トランクブランチの一部になるかどうかわからないとします。ただし、コードを頻繁に共有し、行き止まりになりそうなアイデアを試す必要があります。 Subversionでこのような頻繁な分岐とマージをどのように管理しますか?簡単に言えば、そうではないということです。 dvcsを使用すると、それは本当に簡単です。プログラマーは、ブランチで新しいアイデアをすばやく試し、他のユーザーと共有してから、そのアイデアが定着するかどうかを判断できます。

0
jshen