私は次のセットアップを構成する任務を負っています。
現在、オープンソースプロジェクトの内部正規リポジトリがあります。公開されているリモートリポジトリに更新をプッシュする受信後フックがあります。
Joe Publicは、パブリックリポジトリからプルできます。
受信後のフックを除いて、誰もリモートリポジトリにプッシュしません
かなりの数のユーザーが内部でコードに取り組んでいます。私は、彼らがすでに作業しているワークフローをいじりたくありません。
内部ユーザーは、内部正規リポジトリからコードをチェックアウトし、同じものにコミットします。
外部の開発者はパッチを提出する必要があり、その後、内部のユーザーがパッチをコミットします(レビュー後)。
この時点で、一部の外部開発者がリポジトリへのコミットアクセスを許可できるようにします。
これは、リモートリポジトリを正規化することを意味します。
また、ユーザーのワークフローを変更することも意味します。ここの集団がgitに関して私が欠けている何かを思い付くことができない限り。
現在のワークフローのクイックダイアグラム。
内部ユーザー。
内部リポジトリからクローンを作成します。->コード付きのサル->内部リポジトリにプッシュ->リモートリポジトリにプッシュされた受信後フック。
外部ユーザー。
外部リポジトリからクローンを作成します。->コード付きのサル->メーリングリストを介してパッチを送信->内部ユーザーがコードを内部リポジトリにプッシュ->受信後フックがリモートリポジトリにプッシュ
理想的には新しいワークフロー!!
内部ユーザー。
内部リポジトリからクローンを作成します。->クローンが提供される前に、pre-receiveフックは、リモートから更新されたミラーがあることを確認します->コード付きのサル->内部リポジトリにプッシュします-> pre-receiveフックは、コミットをリモートリポジトリにプロキシし、2を同期します。
外部ユーザー。
リモートリポジトリからクローンを作成します。->コード付きのサル->リモートリポジトリにプッシュします。
これは、マルチマスターセットアップのようなものです。コードをいずれかのリポジトリにプッシュし、いずれかのリポジトリからコードをプルできる場所。
他のいくつかの警告。
内部リポジトリは、リモートリポジトリからプッシュおよびプルできます。リモートリポジトリは内部リポジトリに到達できません。
どう思いますか?