2

開発にはマスターを使用します。安定したトピックブランチをマスターにマージします。クライアントの場合、マスターから分岐します。一部の外部コラボレーター(通常はフロントエンド開発者)がクライアントのブランチでコラボレーションできるようにする必要があります。ただし、他のブランチまたはマスターにアクセス(読み取りまたは書き込み)してはなりません(理想的には、クライアントのブランチが分岐する前のプロジェクトの履歴にさえアクセスできません)。

私の考えは、新しいリポジトリを作成できるということでした。「リビジョン0」は、クライアントのブランチが分岐し、プルリクエストを使用して正規リポジトリに変更をプルするリポジトリです。それを行う方法はありますか?他のリポジトリの具体的な改訂から始めて、空のリポジトリを作成することを意味します。

内容は同じになるので、ハッシュも可能になるはずだと思います。ただし、リビジョンの単純なコピーアンドペーストは機能しないか、エラーが発生しやすくなります。これは、新しく作成されたリクエストが、同じハッシュを持つために正規リポジトリ内のリクエストとまったく同じである必要があるためです。

gitホスティングとしてGithubを使用しており、独自のgitホスティングを作成する意図はないことに注意してください。

4

1 に答える 1

6

クライアントを相互に、またマスターから隠したい場合は、クライアントごとに1つのプライベートリポジトリが必要になります。独自の開発を含む1つの内部リポジトリと、クライアントごとに孤立したブランチがあります。新しいクライアントブランチを作成する場合は、次のようにします。

git checkout --orphan client_xx
git commit

次に、その時点でのマスターブランチの正確な内容を含む孤立したブランチが作成されます。クライアントリポジトリを作成するには、一時的なブランチで少しトリックを行う必要があります

mkdir -p /path/to/client_xx
cd /path/to/client_xx
git init
git fetch /path/to/internal client_xx:tmp
git checkout tmp
git branch master
git checkout master
git branch -d tmp

これで、クライアントリポジトリのマスターブランチには、内部リポジトリのクライアントブランチとまったく同じsha1が含まれます。クライアントにクライアントリポジトリをフォークさせて、プルリクエストを行うことができます。クライアントブランチにプルすることで、クライアントリポジトリを内部リポジトリに統合できます。クライアントブランチが孤立しているため、クライアントブランチをマスターブランチに(またはその逆に)適切にマージすることはできませんが、cherry-pickを使用して統合を行うことはできます。

于 2013-01-12T21:32:38.160 に答える