状況 に依存アップデート枝私は絵が良いの説明だと思う:のgit:お互い
あなたが見ることができるように、我々はいくつかの枝を持って、solution-xyz-foo
それらのほとんど変化させるための数字xyz
。 solution-12
はsolution-11
などを基にしています。このルールからのいくつかの逸脱もある。支店hystrix-dashboard-demo
。
モチベーション ブランチのコードは、コースの参加者がクラスルームスタイルのコースで使用します。そのため、参加者は演習を解決し、コースの最後には、solution-24
ブランチで提供されたコードに似たコードが完成します。 参加者が超越したり、他の問題に直面した場合、彼は簡単に対応する支店をチェックアウトし、残りの演習を続けることができます。
また、1回のコミットとして提供される各エクササイズの解決策を見ることができます。
言い換えれば、コース参加者にとっては、お互いの上に構築された支店/ソリューションは、私たちが保持したいと考えている大きな利点を提供します(これは、これまで開催された複数のコースのフィードバックに基づいています)。
コースの開発者(演習とソリューションの準備、参加者へのコンテンツの提示など)では、コードの一部を時々更新する必要があります。たとえば、solution-3
に問題を修正したい場合があります。 solution-4
などでこの修正を表示するには、修正を含むコミットをmerge/rebase/cherry-pickする必要があります。巨大な混乱を避けるために、各ソリューションのすべてのアップデートを1回のコミットにまとめ、いくつかのリベースを使用して画像に示したやや線形の構造を再構築することにしました。
問題 あなたが推測したように、リベースを行うことは多くの作業です。ヘルパースクリプト(リベース後にコミットにブランチを再接続するが、ブランチ名が新しく/変更された場合にはそれを維持する必要がある)でも、リベースを行い、コンフリクトを修正し、ブランチを再接続し、変更を強制的にリポジトリにプッシュします(強制的なプッシュを使用して)。
実際の作業に加えて、これはたくさんのgit経験を持つチームメンバーだけが自信を持って行うことです。言い換えれば、自信を持っていない人は、私が明確に理解している手順について不平を言う。
gitの明白な利点は失われます。変更履歴はなく(古いバージョンは失われています)。さらに、開発者は協力して変更をコードに伝える必要があります。
質問 次の問題を解決するANYタグ/ブランチ/リベース/ ...ワークフローをお勧めしますか? (現在、Eclipseのマウスを使ってこれを行うことは好ましい方法であるEDIT)は、各エクササイズのための
- コースの参加者は、簡単に、彼らが現在取り組んでいる運動のための最新のソリューションをチェックアウトすることができます便利な方法で提供されています。また、その上に、後のソリューションの構築が変更履歴が、注意点として
を保持しているに応じて
git remote update
は必要ありません)。
これは有望です。私は、この問題は参加者の側で有用性であることを恐れています(Eclipseのgit)。私はそれを明日試してみるよ、ありがとう! –
'tag-name-filter'を使うと、既存のタグの名前だけを更新することができるので、実際のrebaseを行うには' filter-branch'の魔法を追加する必要があります。代わりに、私はまず最初にリベース(変更の最上位にコミットしたもの)を実行してから、小さなタグを付けてリビジョンのトリックを使ってタグを付けてください。 –