0

ここの魔法使いが助けてくれることを願っています。過去に Mercurial を使用したことがあるので、DVCS の概念に精通しています。ただし、少し異なるワークフローで git を使用するのはこれが初めてです。基本的に、これには階層構造が含まれ、場合によってはミラーが使用されます。私が取得したい階層は次のとおりです

Root Repo  
^  
|  
|_____<MIRROR>______>Primary Repo  
                     ^  
                     |  
                     |________<CLONE>____> Developer  
                     |  
                     |________<CLONE>____> Developer  

プライマリ リポジトリをセットアップする理由は 2 つあります。

  1. すべての開発者がルート リポジトリからプル/プッシュする代わりに、ロケーション/帯域幅の使用量を削減
  2. レビューを通じてコードをサニタイズし、承認されたコードのみがルート リポジトリに送られます

プライマリ リポジトリが一種のキャッシュ リポジトリになり、全員がルート リポジトリにプッシュする他のワークフローを見てきましたが、これは私が望んでいるものではありません。私が見たもう 1 つのワークフローは、全員がレビュアーにメールを送信して変更をプルするように依頼するものですが、チームは SVN に慣れているため、これはまだ実現可能ではありません。

私が今まで試したこと:

  1. ミラー フラグを使用してプライマリ リポジトリを複製します。
  2. プライマリ リポジトリからローカルに複製されます。
  3. 変更をテストしてから、ローカル リポジトリにチェックインします。
  4. コードをプライマリ リポジトリにプッシュしました。
  5. ルート担当者からプル (git リモート更新)
  6. git status にリモートの変更が表示されるようになり、私のものは表示されなくなりました
  7. Primary Repo の真新しいクローンを試してみました (私の変更は表示されません)

このワークフローが実現可能かどうか疑問に思っていました (そうあるべきだと思います)。おそらく私は何かを台無しにしています。あらゆる提案を歓迎します。

4

3 に答える 3

-1

あなたが望むことは次のように実行可能でなければなりません(免責事項-私はこれをテストしていません):

設定

  • ルートリポジトリを設定する(R)
  • Rのクローンとしてプライマリリポジトリ(P)を作成します。これにより、RがPのアップストリームリポジトリとして設定されます。
  • ローカル開発者リポジトリ(D1、D2、...)をPのクローンとして作成します(ここでも、PをD *のアップストリームとして設定します)。

ワークフロー

  • 開発者はD*で開発します。満足すると、Pにプッシュします。
  • 開発者は定期的にPからプルして、同僚による変更を最新の状態に保ちます。
  • Pのコードを定期的に確認し、適切と思われる場合はR(*)にプッシュします。

それはあなたの問題を解決しますか?


あなたが試したことに関して:

ルート担当者からプル(git remote update)git statusにリモート変更が表示され、私のものは表示されなくなりました

これは誤解のようです。「引っ張る」git remote updateではありませんgit pull-引っ張るのは:-)です。git remote updateリモートデータのキャッシュされたコピーのみを更新します。変更を実際にローカルブランチにフェッチするには、プルする必要があります。git pullルートリポジトリ内からプライマリリポジトリを作成した場合は、変更が表示されます。

(*)Pにいる間にRにプッシュするか、Rにいる間にPからプルすることができます-結果は同じになります。

于 2012-11-07T11:42:00.847 に答える
-1

全員が 1 つのレポにプッシュすることをなぜ心配しているのですか? Git は非常に効率的です。ソース コード (大きな画像やビデオ) を扱っていない限り、提案している複雑さを追加する理由はありません。

ワークフローに関しては、これが私が使用しているものです: http://dymitruk.com/blog/2012/02/05/branch-per-feature/

于 2012-11-05T08:40:02.957 に答える