3

非常によく似た質問がありますが、どれも私の懸念に対処していないので、最初に重複した質問をした場合はお詫び申し上げます。

「結合」された3つのプロジェクトがあります。つまり、一方の変更がもう一方のプロジェクトに影響します。それらのそれぞれは、個別のgitプロジェクトとしてgithubでホストされています。プロジェクトは次のとおりです。

  • サーバー(... foo / server.git)
  • cliクライアント(... foo / cli-client.git)
  • Webクライアント(... foo / web-client.git)

機能の分岐、リリースの分岐、修正プログラムの分岐、および一般的にソフトウェアのリリースが必要です。

明らかに、web / cliクライアントでの変更はサーバーでの変更と連動しており、分岐する必要がある場合は、それらのプロジェクトごとに分岐を作成する必要があります(分岐は多くの場合、元の場所で終了するため、チーム全体が協力できます)。マスターなどにマージする必要がある後...

これを避けて、同時にバージョンを分岐できるメカニズムを作りたいと思います。これに対する明らかな答えは、各プロジェクトをサブフォルダーとして持つ親プロジェクトを作成し、最終的に親プロジェクトを1つのgitリポジトリに保持することです。

私の質問は、これの欠点は何でしょうか?アプローチは少しナイーブなようですが、これを達成するためのより良い方法があるのだろうかと思います。私が調べていたのですが、それらはダウンストリームgit submodulesを提供し、アップストリームを許可していないようです。これにより、すべてのプロジェクトに分岐してマージすることができます。(多分私はこれについて間違っています)。

ありがとうございました

4

1 に答える 1

1

サブモジュールにはいくつかの問題があります。また、これはgitのサブモジュール機能が作成されたものではないため、あなたのケースでは使用しないことをお勧めします.

3 つのリポジトリにある 1 つのプロジェクトではなく、互いに緩やかに関連する 3 つのプロジェクトがあります。クライアント アプリケーションはサーバーを使用し、Web アプリケーションはサーバーを使用しています。常にではありませんが、あるプロジェクトのブランチ名が他のプロジェクトのブランチ名と同じである場合がありますが、git の観点からは、これはまったくの偶然です。

同様の作業環境を持つ多数の開発チームを見てきましたが、それらはすべて別のリポジトリと別のブランチを使用しています。通常、特定のトピックに関する作業は、あるプロジェクトで数日または数週間前に終了してから、別のプロジェクトで開始されることさえあります (または、別のプロジェクトを変更する必要がまったくありませんでした)。

ただし、このプロセスを自動化する必要があると思われる場合は、単純なシェル スクリプト "create-branch-on-all-projects.sh" および "merge-branch-on-all-projects.sh" を作成できます。

于 2012-11-21T22:51:13.220 に答える