web-dev-qa-db-ja.com

TFSからGit-リポジトリのセットアップ

さまざまな理由から、TFSソース管理からGitへの移行を検討しています。現在のワークフローを維持したいと思っていますが、これがGitにどのように変換されるかを理解するのに苦労しています。 TFSには通常、次の2つのブランチがあります。

  • メイン(ここでの日々の開発)
  • リリース(本番、ここからデプロイ)

通常、開発者は変更をMainにチェックインし、ライブ環境へのデプロイを行う準備ができたら、MainからReleaseにマージします特定のチェックイン。 Gitの世界では、ここで効果的にチェリーピッキングを行っていますか? (私が聞いたところ、一般的には良いことではありません)。 Gitでこのような設定を維持するためのより良い方法はありますか?

基本的には、開発者が完了した作業をデイリービルドオフなどを実行できるブランチにチェックインできるようにしたいのですが、実際に稼働する場合は、さまざまなビジネス上の理由から、メインへのチェックインを除外する必要がある場合があります分岐して、後で使用できるように保存します。

このような設定がGitでどのように機能するかを誰かが説明できますか?

2
harman_kardon

私が正しく理解している場合、現在のプロセスでは、リリース前に、メインブランチに機能A、機能B、およびバグ修正Cのチェックインがあります。リリースを計画するときに、機能Aのチェックインをマージします。バグ修正Cをリリースブランチに追加し、機能Bの変更をメインブランチに残して将来のリリースに備えます。あれは正しいですか?

もしそうなら、あなたは本質的にgitの 機能ブランチワークフロー の修正バージョンを使用しています。あなたの場合、TFSの動作方法により、メインブランチは、リリースの準備が整うまで機能の保持領域として機能します。その後、リリースで必要な機能を選択します。 gitと機能ブランチフローでは、これを処理するための2つの一般的なオプションがあります。

A)開発者は「マスター」(基本的にはリリースブランチ)から分岐し、ローカルマシン上の独自のブランチですべての機能を開発します。これらのブランチは、リリースを実行するときまでローカルマシンにとどまり、リリースに必要なときにマスターにマージされます。

B)「マスター」gitリポジトリを使用している場合、開発者は引き続きマスターからブランチしますが、リリース時まで変更をローカルに保持する代わりに、開発者は機能の完了時にブランチをそのリポジトリにプッシュしてから、リリースを計画するとき。この特定のアプローチの唯一の欠点は、開発者がローカルとリモートの両方のブランチ管理を行う必要があることです。複雑なことは何もありませんが、gitのブランチはポインターであるため、ブランチポインターを「閉じる」(削除する)場合、開発者はローカルマシンでそれを行うには、誰かがマスターリポジトリでもそれを行う必要があります。

どちらの場合も、チェリーピッキングの必要はありません。

そして、あなたやあなたの開発者がgitを初めて使用する場合は、YouTubeの Git for Ages 4 a Up ビデオを強くお勧めします。これは、gitがどのように機能し、ブランチと変更セットをモデル化するかについての優れた入門書です。

編集:

マイナーなことはさておき、gitの「master」ブランチへの参照がたくさんあります(リモートリポジトリについて話すときは同様にOriginへの参照もあります)。これらは単なる標準的な規則です。代わりにマスターブランチにReleaseという名前を付けたい場合は、gitで問題なく実行できます。例やドキュメントを読むときに、精神的な置換を行う必要があります。

2
moneyt

実際、変更する必要があるのは名前だけです。

  • メインはdevまたはdevelopmentになります
  • リリースはマスターになります

そして正直なところ、名前の変更の要件はリリース->マスターだけです。

Gitで同じ名前の「メイン」ブランチを保持することもできます。

0
Greg Burghardt