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


26

git / mercurial / bazzrシステムが集中システム(subversion、perforce)よりも優れている理由を検索しましたが、ビジネス上の理由は見つかりませんでした。

DVCSを非技術者に販売しようとした場合、DVCS が利益を上げるためにどのような議論を提供しますか。

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

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


1
私たちは、訴訟を起こすことについて同様の立場にあり、言わなければならないことですが、私は、現時点でそれがあるとは確信していません。
ジョンホプキンス

git-svnあなたのニーズを満たすことができますか?
-JBRウィルキンソン

@JBRWilkinsonちょうどgit-svnを使用して、多数のリポジトリをgitに移行しました。同社はsvnと統合するツールにあまり投資していないので、それほど問題はありませんでした。
Keyo

編集内容を参照してください。SVNがどのように、なぜ失敗したかを説明していないので、交換が必要だと感じます。(例えば)私の答えはありませその現状を変更するためのビジネスケースを見つけることについてのsvn対gitのについて。
マーフ

回答:


23

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

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

私は、実際には否定的ではありません-おそらく(状況に応じて)行われるべきケースがあると思いますが、もしgitがsubversionよりも「良い」という場合は、実際にはありません。

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

私の考えでは、利点は柔軟性、より良いマージ、ビルドを壊さずにローカルコミットを実行できることなどです。欠点は、制御の欠如とその柔軟性にあります。

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

うーん、おそらくこの答え全体が本当にコメントなのでしょうか?ビジネスケースの特定に役立つかどうかを確認するために、(環境内の)git over subversionについてここで(質問で)ケースを作成する必要があります。


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


1
許可/柔軟性の懸念に対処する:まだ通常どおり権利を設定できる「ソース」リポジトリも必要です。継続的インテグレーションはソースリポジトリに対して実行され、開発者はソースリポジトリのクローンなどを作成します。
マチューM.

1
完全なクローンがバックアップであるという点はよくできています。私の「仕事」の内容はsvnであり、私の水銀は個人的であり、まだある程度限定的であるため、十分に理解されていないこの領域がいくつかあることを認めます。
マーフ

14

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


2
ビジネス環境では、「集中型サーバー」には、冗長性、バックアップ、および管理者(および他のすべてのサーバー)を維持する責任があります。
JBRウィルキンソン

2
大規模なビジネス環境では、サーバーに冗長性があります。小規模ビジネスでは、このようなサーバーの冗長性はそれほど確かではありません。
マイケルショー

2
集中化されたサーバーに障害が発生しても、すべてのコードが削除されるわけではありません。バックアップがなかったとしても、最悪の場合は、変更履歴を削除することです。しかし、すべての開発者がコードをチェックアウトしている限り、システム上にも現在の形で存在します。
メイソンウィーラー

1
@mason:しかし、それはかなりの仮定です:「すべての開発者が...」。小規模なプロジェクトではさらに小規模なプロジェクトであるため、プロジェクトは1年または何もコーディングしなくても幸せに使用できます。 2
インカ

また、コミット履歴の価値を過小評価しません。巨大なシステムでは、誰が、そしてなぜコードに何かをしたのかを知ることは本当に価値があります。
タマスゼレイ

8

開発者が単独で作業している場合でも、バージョン管理が生産性(ひいては利益)を高めることを主張できると思います。

優れたDVCSは、チームの一員として作業している場合でも、同じ生産性の利点を認識します。各開発者はバージョン管理のすべての利点を享受できます。変更をプッシュする準備が整うまで、他の開発者が行っていることと一緒に。


これは私が投稿しようとしていたものです。開発者が自分のリポジトリに問題を起こすことなく、早期に頻繁に自分のリポジトリにコミットすることで、生産性が向上することは確かです。
Carson63000

5
その後、最終的に変更をプッシュするときに統合の地獄にいます。これは良いことではなく、悪いことです。
ヘンリー

多くのコミットを使用してローカル開発を行っている間、中央リポジトリから変更をプルし続け、他のユーザーが取り組んでいる進行中の開発に合わせてローカルの変更を維持できます。したがって、中央リポジトリに変更をプッシュするときが来たら、そこで行われた変更の大部分がすでにあるはずであり、統合は簡単になります。
デイブジョンストン

1
同僚の1人がまったく同じことをしていて、両方がしばらくの間統合していない場合を除きます。常にトレードオフがあります。メインラインに統合されるべきではないもの(間違ったソリューション、ソリューションの行き止まりの試みなど)がメインラインに統合されたケースを見てきました。
ジョッペ

2
これらのすべてを(a)SVNブランチまたは(b)複数の作業コピーで行うことはできませんか?
-JBRウィルキンソン

4
  • バグごとのブランチ
  • 差分の待ち時間を短縮しました。
  • ピアレビューを行っているときに、ブランチの履歴を非常に迅速に任意にナビゲートできること。
  • 集中型サーバーにアクセスできない場合でも、履歴全体にアクセスできます。オフィスにいなくても、電源は切れましたが、ラップトップのバッテリーはまだ動作しています。

これらのことにより、ソロでもチームでも、より効率的に作業できます。より効率的な作業=開発時間の短縮=市場投入までの時間の短縮=利益。


3

自分のブログにリンクすることは許してくれますが、このテーマに関する記事を書いています。

関連性がない場合は、自由に投票してください。

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


ブログのエントリはよく書かれています。私はまだそれらのすべてを読んでいません。GitとHgがはるかに人気があるように思えるのに、なぜBzrを選んだのでしょうか。人々は遅いのでBzrを嫌うようです。また、リビジョン番号ではなくツリーハッシュを使用しているため、Gitのファンでもあります。ブランチがマージされると、bzr rev番号はすべてスクランブルされませんか?
-Keyo

2
@Keyo、私はbzrを選んだのは、DVCSを自分で教える必要があり、bzrが最も初心者に優しいからです。それ以来、速度、機能、および安定性のためにgitに切り替えました。Bazaarはまた、そのリビジョンをハッシュし、グローバルに一意の識別子を持っています。それらはユーザーに公開されるデフォルトではありません。リビジョン番号は、実際にgit HEAD~1HEAD~2、などを使用する場合と変わりません。実際のハッシュが必要になることは非常にまれですが、これはgitで最初に学ぶことであり、常にあなたの顔にあります。あなたが本当に必要としない限り、ユーザーからそれを隠すことは、bzrがより初心者に優しい理由の1つです。
カールビーレフェルト

説明をありがとう。転覆から来た私にとって、Gitは簡単ではありませんでした。多くのコマンドは同じ単語を持っていますが、異なることをします。
Keyo

2

DVCSに対する私の主張は次のとおりです。

  • 分岐は壊れていません。これにより、機能の開発や既存の製品にパッチを適用する際の摩擦が少なくなります。摩擦には時間がかかります。

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

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

基本的に、摩擦を減らすことです。これにはMudaという用語があります。摩擦が大きければ大きいほど、物事を行うのが苦痛になります。痛みが多くなればなるほど、得られる利益は少なくなります。


2

自立している場合は謝罪しますが、ビジネスケースに不確実な条件を入れないでください。

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

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

以下を考慮してください。

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

このすべては何になりますか?私はまだDVCSにSVNを好む正直な試みを与えられた開発者に会ったことがありません。もう1つ迷惑で大胆な発言をすることができれば、SVNは開発者が使用することを強制する「必要な悪」です。Gitは、開発者の生産性と満足度を向上させるツールです

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


5
-1-あなたはグランドスタンディングであり、あなたが書いたものにいくらかの真実がある一方で、それは理性的な分析ではなく、FUDに迫るほど否定的に紡がれます。SVNは遅いですか?リポジトリが広大でネットワークが氷河状の場合のみ。SVNがダウンすると作業が停止しますか?えー、ダウンしたことを思い出せませんし、私のコンピューターはソースの編集/コンパイル/実行のためにリポジトリの存在に依存しません。SVNの分岐とマージは不十分ですか?うわー、人々は短い思い出を持っています... DVCSがなぜマインドシェアを獲得しているのですか?機能のミッシュマッシュ-改善されている-と、率直に言って、ファッション。
マーフ

1
@Murph-好むと好まざるとにかかわらず、人々変化が嫌いなのです。彼らに変化を納得させるには、現状が破られていることを彼らに納得させる必要があります。そして、それ壊れています。FUDは、恐ろしく、不確実で、疑わしい理由がない場合にのみ悪い結果になります。マインドシェアに関しては、私はあなたに同意します。しかし、それは本当にポイントではありません。決定を下す人々がそれに同意するかどうかです。そして、私が今まで会ったすべてのマネージャーは、この議論に納得していました(たとえ彼らがgit を嫌っていたとしても)。
ジェイソンベイカー

2
ジェイソンがあなたの主張がうまく作られていないことを単に示唆しているだけでは、必ずしもそうではありません。具体的には、あなたは効果のために過大​​評価していると思います。そして、あなたがそれを捕まえると、たとえあなたが正しいとしても、あなたは議論のためにポイントを失う傾向があります。(もちろんあなたが間違っている点を除いて...(-:)
マーフ

2
あなたのポイントはすべて、事実ではなく意見の問題です。それぞれを列挙しますが、コメントには十分なスペースがありません。自立せずにもう一度答えてください。
ヘンリー

1
@Henry-Programmers.seは、主観的な質問と回答用です。主観==意見の問題。
ジェイソンベイカー

1

私が考えることができる唯一のことは、gitがネットワーク接続なしで動作するということです。それ以外のすべてのものは、かなり長い間、subersionまたはperforceを使用する技術ユーザーに販売するのが難しい場合さえあります。


2
もちろん、Subversionはほとんどネットワーク接続なしでも動作します。(明らかにコミットしていませんが、作業コピーに関する情報を取得したり、基本リビジョンとの差分を取るなどの一般的なことはすべて機能します。)
j_random_hacker

@j_random_hacker:VCSのポイントは、コードの変更を追跡することです。コミットはコードの変更を追跡します。オフラインでコミットできない場合は、VCSがオフライン中に機能しないと主張します。
デニーズ

1

トラブルがある場合の違いを示す

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

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

  • 分岐とマージはほとんど無痛です。これにより、つま先を踏むことなく、個別の機能やバグ修正を簡単に行うことができます。また、特定のバグ修正を他の場所にも非常に簡単に適用できます。

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

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

そのため、毎日のルーチンではそれほどメリットはありませんが、何かが正常に機能していない瞬間は非常に明確です!

したがって、ビジネスケースでは、災害が発生したときに何をするかを検討することをお勧めします...


これはバックアップの場合と同じ議論です。災害が発生した場合にのみ必要です。質問は、それが行われたときにあなたが何をするかであり、あなたはそのとき起こることを受け入れるでしょう。

0

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

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


-1

SubVersionを廃止するビジネスケースは、分岐サポートが製品の安定化と保守の障壁であるということです。製品をリリースしてから開発を続ける必要がある場合は、ブランチが必要です。Subversionでは、開発者はブランチを適切に使用しないため、開発をTunkで維持できず、バグ修正が実際にトランクとブランチの両方にも適用されるようにします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.