合併や買収により、さまざまなバージョン管理システムを統合する方法、または他のバージョン管理システムを選択する方法


11

企業は、異なるバージョン管理システムを使用する他の企業を買収します。

たとえば、Subverson-GITブリッジを使用したり、1つのツールだけを別のツールで使用することを決定したり、システム間を移行したりするなど、そのようなシステムを統合する方法に関する一般的な知恵はありますか?

そのような意思決定には、たとえばソフトウェア開発の「ジョエル」テストと同等の基準を使用していますか?

回答:


11

いくつかの移行の個人的な経験から移行の質問に答えるには:

現在のバージョンのソフトウェアをベースラインとして新しいソース管理システムに入れて、そこから作業することを恐れないでください。

ほとんどの場合、履歴は必要ありません。つまり、統合中に実行するタスクが1つ少なくなり、問題が1つ少なくなります。

活発に開発されているファイル/プロジェクトは、すぐに新しい履歴を生成します。そのため、変更が行われた理由を調べる必要がある場合、最近の変更であるため、履歴が現在のリポジトリにある可能性があります。

移行前に安定していたファイル/プロジェクト(すべてが等しい)は、移行後も安定したままであるため、履歴を参照する必要はありません。そのような古いファイル/プロジェクトの履歴を持っているバグを調査する必要がある場合、実際には何のメリットもないことがわかりました。古いリポジトリを1年6か月利用できる限り、そのような場合に参照があります。


公正なポイントを+1し、必要なもののみを移行し、古いバージョンをレガシーの以前のリポジトリに残します。それ自体のために移行しないでください。このアプローチは、組織化と検索を選択するアプローチのバリエーションです。検索で必要なものがすぐに得られる場合は、毎回検索するものを整理する必要はありません。
therobyouknow

1
IMOに最適な戦略を+1。念のため、1つだけを使用し、残りは読み取り専用モードで使用してください。
user281377

1
+1:移行に関するより正確な回答。
VonC

1
+1-最後の3つのバージョンは言うまでもなく、既存のコードを理解するのに十分な困難。
ジェフ

1
クールなcvs2svnスクリプトを使用して、多くのCVSリポジトリをSVNに変換しました。「最近の変更」を超えて履歴を調べた人のことを思い出すことはないので、これは実際にはディスクスペースの価値がありませんでした。もう一度やり直した場合は、CVSリポジトリにタグを付け、SVNに新規としてチェックインし、CVSリポジトリを読み取り専用としてマークします。
JBRウィルキンソン

4

管理側では、主に次の質問です。

  • サポート:VCSをリリースする会社は、トラブルが発生した場合でも引き続き存在します。
    悲しいことに、ClearCaseのような時代遅れの製品がまだ考慮されている主な理由の1つです(ClearCaseは2003年以降、IBM製品です)。
  • ライセンスコスト:フリーウェアの代替品があったとしても、VCSの「グループライセンス」を交渉したり、サーバー、ネットワーク、サポートなどを含むはるかに大きな契約に実際に含めることができます。この種の製品のグローバルライセンスは終了できます。公共料金よりもはるかに安い費用で。

プロジェクト側では、次の問題もあります。

  • 管理:VCS(またはGit、SVN、その他について話している場合は多くのVCS)をどのサーバーにインストールしますか?どのバックアップポリシーを使用しますか?どのDRP(災害復旧計画)?
  • ローカルサポート:レベル1のサポートを受けるのは誰ですか?レベル2?
  • 市場の知識:このVCSとそのすべての機能を活用するための適切な知識セットを備えた十分な開発者や管理者を確実に見つけることができますか?

フリーウェアであろうとなかろうと、「無料の」ソフトウェアではなく「無料のスピーチ」(あなたが自由に選択して展開できる)のように「無料」のソフトウェアであることを覚えておいてください、バックアップ、管理、サポート、...)

上記の基準は、VCSを保持し、放棄するものを決定するための開始点です。
ただし、後者の場合、次のことを考慮する必要があります。

  • 移行戦略:プロジェクト履歴をあるVCSから別のVCSにエクスポート/インポートできますか?
  • ブリッジ戦略:2つの異なるVCSに歴史があるのは理にかなっていますか?
  • プロジェクトの陳腐化:プロジェクトがメンテナンス/サポート終了の状態にある場合、しばらくの間古いVCSをサポートする方が良い場合があります。

+1、良い答え、箇条書きは私が探している基準の概要を示しており、それらの説明も役立ちます。回答を受け入れる前に、他の人にチャンスを与えます。ありがとう。
therobyouknow

1

異なるシステムを統合する必要が本当にありますか?私たちのチームでは、各プロジェクトは独自のリポジトリに存在するため、それらの履歴は独立しています。ここでは、Subversionの下のいくつかのプロジェクトと、mercurialの下のいくつかのプロジェクトで、それらの間に依存関係があっても問題なく動作します。

あるVCSから別のVCSに移行することを選択した場合は、利用可能な変換ツールを確認してください。私の経験から、プロジェクトの履歴を削除する技術的な理由はありません。

編集

私は何かを理解したと思いますが、それは質問や他の答えに暗示されていました。VCSは依存関係の管理にも使用されているという事実です。svn:externalsあるレポ(依存関係)を別のレポと統合するなどのVCS機能を使用することは非常に一般的であることを知っています。

私たちのチームが2つの異なるシステムの橋渡し(または統合)の必要性を感じない(技術的な)理由は、依存関係を管理するための別個のツールがあるためだと思います。レポはお互いを知りません。


異なるシステムを統合する必要がありますか?あるチームの作業が別のチームによって使用されている場合、はい。統合は、必要性のレベルと利用可能なスタッフリソースに応じて、緊密な場合と失われる場合があります。プロジェクトが完全に独立している場合はありません。残っている唯一の懸念は、複数のシステムをサポートすることと、それが良いことであるか悪いことであると認識されているかです。多様なコンピューティングの世界に住んでいるということを受け入れれば良いのですが、過度に独創的なツール自体を選択することによって、自分自身のために集中して決定性を示すべきだと考えるなら悪いのです!
therobyouknow

PS。+1さまざまなコンピューティング環境を許容する組織にいることについて、幸運なあなた、バルジャック。
therobyouknow

0

たくさんの良い答え。考えるべきもう1つのことは、VCの切り替えが非常に重要であると考えて、チームメンバーに逃げさせないことです。移行、学習曲線などにset折がありますが、問題が多すぎる場合は、能力や協力のレベルに疑問を呈する必要があります。


+1ここにリアリズム。人々は自分の神経を握り、勇気を出して先に進む必要があります。リスクを明確に定義する必要があります。私の職場で他の人が見たり聞いたりしていることの一つは、私たちが従事する前に不確実性を減らしたり、リスク/隣接を明確に定義するのに十分な努力をしていないことです。get-it-wrong / fixの反復には十分な時間がありますが、最初に正しく実行するのに十分な時間がないようです。問題を修正することは、たとえそれが不必要であったとしても、報われ、進行中の活動と見なされます。
therobyouknow

1
これは、問題のVCSと移行がどの程度うまく行われているかによって異なります。GitまたはCVSからロックされているVCSへの移行は、非常に不快になります。
デヴィッドソーンリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.