5

ACME 社は、拡張およびカスタマイズした製品 X を保持しています。彼らは git リポジトリを私たちに見えるようにしましたが、それに書き込むことはできません。ACME は、Gitolite で独自の内部 Git サーバーを使用しています。

開発者はそれに書き込みたいので、ローカル コピーが必要です。ただし、会社 ACME からのコミット履歴を保持しておきたいと思います。それを行う方法はありますか?また、ACME 社のコードでコードを更新するにはどうすればよいですか? Github エンタープライズを使用しています。

私が考えていた方法では、ACME 社の歴史が失われます。

  1. リポジトリ X をステージング フォルダーにクローンします。このリポジトリを ACME 社から最新の状態に保ちます。
  2. 使用する新しいリポジトリ Y を作成します。
  3. 「オリジナル」コードのリポジトリ Y にブランチを作成します。開発者はここから分岐または分岐します。
  4. ファイルをリポジトリ X からリポジトリ Y の「オリジナル」ブランチに手動でコピーします。

最善の方法があるはずです。私は本質的に、開発者がコードをコミットするためのアクセス権を与えながら、ローカル フォークを作成して最新の状態に保ちたいと考えています。

4

2 に答える 2

3

これは「ベンダー ブランチ」パターンと呼ばれます。(これらの SO タグを投稿に追加することを検討してください。)

また、担当者に ACME アーティファクトを埋め込むこともできます。変更されていない元の ACME コードは、独自の (いわゆる「ベンダー」) ブランチに存在し、「マスター」または必要な場所にマージされます。

ACME がコードを変更するたびに、ACME ベンダー ブランチをチェックアウトしてそこに更新を保存し、ベンダー タグでタグ付けし (これにより、ACME のどのバージョンが社内にあるかを簡単に確認できます)、必要に応じて変更をマージします。

追加された編集: このメカニズムを理解したら、サブツリー マージ メカニズムを見てください。

于 2014-08-20T14:32:44.310 に答える
1

私の意見では、ACME リポジトリをフォークできます。これで、フォークされたリポジトリ (またはローカル クローン) への書き込みアクセスが可能になりました。

これで、このローカル リポジトリに新しいブランチを作成して、元の読み取り専用リポジトリにリンクされたマスター ブランチを保持したまま (または必要に応じて名前を変更して) 開発を続けることができます。

これを行うと、コードを ACME リポジトリで行われた最新の開発に更新する必要があるときはいつでも、その変更をそのリモートからプルして開発ブランチにマージするだけです。そのリポジトリの複数のコピーを作成する必要はありません。

于 2014-08-19T20:05:04.557 に答える