GitHubでプロジェクトのバージョンを制御するにはどうすればよいですか


13

今日、GitHubでできる限り多くの時間を費やして実際に仕事をしているチームの唯一の人でも)、実際の企業アプリケーションにどのようになるかを実際に感じています。

私が持っている1つの質問は、バージョンを制御することです。プロジェクトを始めたとしましょう。次に、チームメンバーはいくつかのブランチを作成し、そこで開発しました。本番の準備ができたら、すべてのブランチをmasterブランチにマージしました。最後に、versionでライブを開始し1.0ます。

現在、そのバージョン1.0は公開されており、そのバージョンのソフトウェアに関していくつかの問題が報告されています。1.1プロジェクトを急いで導入した問題を修正するために、バージョンの開発を開始したいと思います。

さて、質問はこれです:

ここでバージョニングをどのように制御する必要がありますか?

新しいブランチを作成し、そこにソフトウェアv1.0のバージョン1.0を保持し、いくつかのブランチで開発する(またはしない)場合、それらをマージしmaster、バージョンを公開する必要があり1.1ますか?

そのような状況に慣習はありますか?

回答:


19

私は次のブランチモデルを見つけました(そして採用し始めました)。

nvie.comからの画像

(記事の画像)

その記事には多くの素晴らしい慣習と厳格なルールが記載されていますが、私はそれを強くお勧めします。

興味がある点:

  • マスターブランチは、バージョンにタグを付ける場所です。ここでは開発は行われません。運用環境で展開されたバグの場合、修正プログラムブランチでバグを修正し、新しいバージョンにマージしてタグを付けます。
  • 開発は、開発ブランチと機能ブランチで行われます。個人的には、develブランチと機能ブランチの機能のバグ修正を行っています。
  • ソフトウェアがリリースに到達し始めたら、リリースブランチに分岐します。リリースブランチは、私が最後の仕上げをする場所です。バージョン番号のバンプ、メタデータの変更など。そして、マイナーなバグ修正。終了したら、マスターにマージし、タグを付けてバージョンと呼びます。
  • 2つの主要なブランチ:マスターは「聖なるブランチ」です。HEADは常に最新の製品コードであり、developは夜間のブランチです。そのHEADは常にコードへの最新の(ただし不安定な可能性のある)追加を反映します。

特定のケースでは、手順はそのバージョンがどれほど急いだかによって異なります。残された機能があれば、私は開発版のリリースに戻り、すべてをやり直します。デプロイされたバージョンにバグがある場合、ホットフィックスブランチに分岐し、バグを修正し、マージしてv1.1にタグを付けます。両方の場合、最初にバグを修正し、次に説明されているように機能を追加します。


非常に有益で詳細。また、完璧な練習。また、非常に理にかなっています。prodのマスターを持っていると、保守が簡単になります。ブランチのタグ付け(またはコミット?)にあまり慣れていません。詳細を教えてください。上記のモデルに従ってどのように行うことができますか?
タグバーク

1
gitでは、タグ付けの対象はコミットです。それはあなたが言うことを意味します:「ここにこのコミットがあり、私はこれから「v1.3」と呼びます」。実際には、マスターブランチに切り替え、(現在安定している)開発ブランチにマージし、コミットしてタグ付けすることを意味します。その後、すべてのタグをリストし、過去のリリースで何が本番に入ったかを確認する必要がある場合にそのコードに戻すことができます。タグにはもう少しあります(Linuxカーネルなどの大規模な分散開発に役立ちます)。興味があれば、progit bookをお勧めします。
タマスシェレイ

ProGitは間違いなく一から読む本の1つです。今のところ、仕事をやりたいと思っている部分だけを読んでいます。これまでのところ、私たちはmasterブランチで開発を行ってきました。それを維持する必要があると思います。しかし、上記のモデルによると呼ばれる別のブランチを開き、ブランチ productionとして使用しmasterます。
タグバーク

このモデルを試している間、私が苦労していることの1つは、特定の記事、機能、およびリリースブランチで説明されているサポートブランチがあることです。複数の将来のブランチが存在する可能性があります。たとえば、FeedbackFormは将来のブランチであり、ContactFormは別のブランチです。これは私が推測するこのモデルでは大丈夫ですか?複数のリリースブランチも必要ですか?もしそうなら、どのようにそれらに名前を付けるべきですか?
タグバーク

まず第一に、あなたは手紙にそれに従う必要はなく、あなたが守っているルールを確立するだけです。あなたとあなたのチームのスタイルに最適なことをしてください。第二に、はい、1つの機能と1つのリリースを持つ短命のプロジェクトがない限り、複数の機能とリリースブランチは正常です。記事によれば、命名はrelease- *およびfeature- *です。リリースのアスタリスクの代わりに将来のバージョン番号を、機能ブランチの場合は課題トラッカーIDを配置すると思います。
タマスゼレイ

1

私がほとんど目撃しているのは:

  • マスターはあなたのための製品です。最終的には、将来のバージョンx.0がすべてマスターになります。
  • 本番環境の各バージョンにタグ/ブランチを作成して、それを必要とする顧客向けにサポートできるようにします。
  • どちらか一方から修正をマージすることは、ケースごとに対処することです。

ありがとう!あなたはv1.0という名前のブランチを維持するのが合理的だと思います、v1.2は合理的ですか?
タグバーク

@tugberkは、対応するソフトウェアがそのバージョンに存在する限り、特定のホットフィックスブランチが必要な場合にブランチをすばやく分岐できるように、ブランチを保持することは理にかなっています。そのバージョンにソフトウェアがもう存在しない場合(サポートされていないため、作業が発生しない場合)、ブランチの最終マージを実行してから削除することは理にかなっています。あなたも、そうでない場合は、あなたが(REFLOGが少しを助けることができるが、これはリポジトリごとにある)分岐履歴を保持しません、ただ「閉じる支店XXXX」と言って、(私は枝の開始時に、多くの場合、それを行う)コミット最終的に空を作成することができます
パトリックメヴゼック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.