monorepoの一部を共有する


12

現在、多くのSVNおよびGitリポジトリ(それぞれ約50%)で構成される複雑で非効率的なビルドシステムがあり、これにはgitサブモジュールリポジトリも含まれます。また、全体を多かれ少なかれうまく管理する自家製のスクリプトもあります。
(クローズドソース)コードベースの主なポイントは、それが密結合されており、すべてのプロジェクトが同じバージョンで同時にリリースされることです。

これをよりシンプルなシステムと単一のVCSに移行し、gitサブモジュール、google Repo、monoreposなど、いくつかのオプションを検討しています。最終的なVCS​​はまだ定義されていません(それを義務付けるオプションを除きます)。svn、git、またはそれが私たちの状況により適している場合は他のものでもかまいません。

各ソリューションのプラスとマイナスをリストしようとしていますが、モノレポで現在抱えている大きな問題の1つは、外部エンティティと一部のモジュールを共有することは簡単に思えないことです。これらの人々がそれらのモジュールをチェックアウトして正常に動作できるようにしたいが、残りのレポジトリのコードや履歴にアクセスできないようにする必要があります。現時点で私たちが頻繁にまたは大々的にやることではありませんが、将来的にはそうなる可能性があります。

このような権限管理システムは、VCSシステムに存在しますか?
または、この問題を軽減する方法はありますか?


Team Foundation ServerまたはServiceを検討しますか?Gitをサポートしており、優れたワークフローと継続的な統合機能が含まれています
hanzolo

検討しているmonorepo実装はどれですか?
ダンコルニレスク

回答:


3

あなたの説明から、ここにはいくつかの選択肢があると思います:

  1. gitサブモジュールを使用する-GitHub(またはその他)のようなサービスを使用すると、プロジェクトごとに権限を管理し、展開プロセスを分離できます。しかし、gitサブモジュールは時間の経過とともに大きな苦痛になると聞いています。gitサブモジュールをきれいに再初期化/再ダウンロードするための自動化されたスクリプトがここで役立ちます。
  2. リポジトリを独立したサービスに分割します。これにより、同時開発が可能になりますが、サービスの発見、複数のサービスの展開、開発環境、継続的な統合/展開、および管理から生じる他のすべての小さな喜びについて考える必要があるため、多大な苦痛が生じます。マイクロサービスアーキテクチャ。
  3. Pythonのpip、Node.jsのnpm、JavaのMavenなどの正式なパッケージ管理システムを使用します。必要なコードをリポジトリにデプロイし、必要に応じてメインリポジトリで使用します。それらをバージョン管理します。モジュールとメインリポジトリ間のカップリングによっては、実際に下位レベルのモジュールを個別に抽出、実行、またはテストできない場合があります。あなたがいる場合することができ、しかし、これはまだリモートリポジトリからそれらをインストールすることで、ビルド時にあなたのパッケージを統合することが可能でありながら、複数のリポジトリとよくそのゲルを行くにはかなり良い方法です。

残念ながら、これらのオプションはどれも完璧ではありませんが、コードベースの状態に応じてすべて有効です。あなたの説明はオプション3のように聞こえるでしょう。

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