2017-08-10 4 views
1

当社のクライアントは機能ブランチなしヘリットを使用しており、これまでのところ、彼らは通常、新しいストーリーのためにかなり大きな変更セットを持っていました。私たちの会社はコードベースで新しくなったので、私たちはユーザーの話を対にして取り組んでいます。 1件のレビュー:2人が狭くコラボレーションしている場合、Gerritで使用するワークフローは何ですか?

ヘリットは1つのコミッター以外のシナリオに対処しはなはだ少しドキュメントを持っているようです。それはヘリットと繰り返し書き換え公共履歴を共有変化にその主張のためではありませんでした、その答えは以下の、たとえば、ワークフローだろうどのような「機能ブランチ、スカッシュ、後でそれをマージ共有」のようになります。

  • AnneとBarneyは、ウィジェットのリストを編集するフォームで協力しています。
  • 大型既存のコードベースに取り組んでの認知的負荷を分割するには、アンは「バックエンド」に焦点を当てます - 正しくドメインモデル内のウィジェットを交換/追加/削除。 Barneyは "フロントエンド"で作業します - フォームをデザインし、UIコードを書いてください。
  • デザインは、アンはバーニーが使用するIWidgetServiceを公開するということです。さて、これが唯一のUIとビジネスロジックとの素敵な明確な境界を持っているのに役立つ - これはフロントまで実装はるかに少ない、凍結することができるAPIではありません。
  • これは、BarneyがIWidgetServiceを少し変更する必要がありますが、インタフェースに対してコードを作成し、Anneに任せて、コードの一部がよりよく分かっているので変更を実現する必要があることを意味します。

も完全に見直しベースのプロセスをバイパスしていない間アンバーニーは、自分の仕事を同期できるようにするには、この場合にやるべきことを正確に何

(名前は。無実を保護するために変更)とお互いのコンピュータをリモートでセットアップするだけですか?できれバーニーは、Gitリポジトリに完全に新しいですので、アンは彼女がむしろないと思いますGitの手術のビットを行う方法を知っている一方で、など慣用的に可能な限りのGitを使用しています。 (例えば悪い=「バックエンド」チェンジセットとそれに基づいた「フロントエンド」チェンジセットを作成し、いずれかが更新されると、物事を正しく再構築するいくつかのブードーを行います)。

+0

私も同じような質問があります。これを聞いて以来、Gerritで共同制作されたフィーチャーワークフローを理解しましたか? – redhotvengeance

+0

@redhotvengeance - 私は "Git surgery"と一緒に行きました。私たちがしていることは、いつでも、人はチェンジセットを「所有している」ということです。私はある種の骨格をチェックして、同僚が当面コード化することができるかどうかチェックします。私たちは独立していて、今は同期しています。つまり、私の同僚は私が歴史を書き直していることを知っています。私はチェリーで一緒にコミットを貼り付けます.Gerritの最新バージョンをお互いに選んで、レビューのために提出してください。チェンジセットを小さくしたままにしておき、今度はそれらを統合してからマージすることができます。 – millimoose

+0

@redhotvengeance - これは、いつでも私たちが所有するチェンジセットを他の誰かの変更に影響を与えずに修正できることを意味します。これは本当に苦痛です。 Gitの手術はかなり厄介ですが、実際にはエラーが発生しやすく、時間がかかります。そして、マージされるまでチェンジセットを小さくすることは、マスターへのリベースを容易にします。 – millimoose

答えて

1

新年の変更を強制しようとすると爆発するレガシーシステム上の管理ワークフロー。

  • 「かなり大きなチェンジ」APIのいくつかの並べ替えなし「バックエンド」と「フロントエンド」に作業を分割
  • 悪いです...悪い
  • ユーザーが解決するにはgitのいくつかの知識

を持っている必要があります - 小さな変化

  • は変更がシステム
    を壊さないようにしてくださいやっ上

    • コンセントレイト(それぞれの変更は適切な自動検証に合格する必要があります)
    • ZEコンポーネント間の依存を減らす方法で製品を整理するために、開発者間の依存
    • てみを軽減方法で作業
    • git-gerrit
    • のような開発者のための痛みを和らげるのに役立つツールがありますが、

    EDIT:小さな変化について

    、一例として
    non-breaking changes次の一連の点を考慮してください。

    1. デザインインターフェイス、すなわち:フロントエンド( "FE")はバックエンドにリクエストを送信する方法
      ( "BE")
      と返信の返信方法。
    2. ヘリット-変更1:
    3. ヘリット・変更2インターフェイスを実装します。FE
      からの要求を受信し、仮想(ただし、有効な)を返しますBE
      のスタブを実装
    4. 返信
    5. ゲリット-変更3,4:BEに平行で作業し、FE実装
      (異なる変化として各部分を提出)

    Change-1とChange-2をブランチに押し付けると、製品が破損してはならず、
    となり、機能の実際の実装では、
    の並列処理が可能になります。
    今すぐ彼らは普通の人のように、git pull --rebaseのメインブランチをすることができます。

    幸運を祈る!

  • +0

    私は努力していますが、プロジェクトにはかなり新しいので、レビューを通して変更を行うのに時間がかかります。特にコードベースがくしゃみをしたときに神秘的に(私たちにとって)壊れてしまうからです。 「フロントエンド」/「バックエンド」の分割は主に、ドキュメンテーションや疑わしいデザインの選択肢がほとんどない大規模なコードベースを把握するための認識負荷を分割したものです。 – millimoose

    +0

    Git/Gerritは俊敏なワークフローに最適で、 "機能"のようなサウンドは1つの変更に合わせて大きくなります_。特に、システムが破壊可能な場合、大規模な自動テストによってバックアップされたマスターブランチの小さな変更が最善の方法です。こうすることで、修正プログラムをかなり早く導入することができます。 (私はあなたがそこにいないと理解しています - まだどちらもありません) – Gonen

    +0

    モジュールごとに3人の社内/請負業者開発者がいるプロジェクトでは、 "2人の長年の高齢者がお互いのアウトプットを見直す"新生児 "は厄介でした。また、私の主な利点は、あなたが最後に見たときから「チェンジセット」の新機能を伝えることができるということです。追加だけの共有ブランチの利点と使い慣れを失うことなく実装できました。 Gitの概念モデルを互換性のないものに置き換えるのではなく、後者の情報を元のものからどのように抽出するかを考え出すことです。関連項目:線形化履歴 – millimoose

    関連する問題