ブランチのマージは実際にはどのように機能しますか(フードの下)?

StackOverflow https://stackoverflow.com/questions/423624

  •  05-07-2019
  •  | 
  •  

質問

これは素朴な質問かもしれませんが、オブジェクトで尋ねられたように、破損したコードを生成せずにブランチをメイントランクにマージするためにソフトウェアをバージョン管理する実際の方法は何ですか?

簡単な例を次に示します。プログラム「Hello World Power edition」のメイントランクからブランチを作成します。クリンゴンのサポートを追加します。これは、printHelloWorld()関数の動作を変更する根本的な変更です。

一方、「#Hello World」を引き起こすバグ#749のため、 「Helo World」と書くために、メイントランクの関数printHelloWorld()が変更されました。

今、私が見ている問題は、ブランチごとにメイントランクにマージするときに、sayHello.pyファイル内の関数printHelloWorld()の衝突を実験することです

VCSプログラムは、どのようにしてブランチからクリンゴンサポートを追加し、 メイントランクでバグ修正を維持するかをどのように知っていますか?これを回避するための人間主導またはソフトウェア主導の戦略は何ですか?

事前に感謝します。

役に立ちましたか?

解決

  

VCSプログラムはどのように追加するかを知っていますか   私の支店からのクリンゴンのサポートと   メイントランクのバグ修正を維持しますか?

VCSは、ソースコードのセマンティクスについて何も認識していないため、テキスト/バイナリファイルの束と見なします。 VCSシステムは diff / merge アルゴリズムを使用して、現在のファイルバージョンとの競合を検出します。これらの変更の意味を知っているのはあなただけなので、そのような競合を解決するのはあなたの責任です。 SVNなどの一部のVCSでは、変更をコミットして何も失われないようにする前に、トランクからの最新の変更で作業コピーを更新する必要があります。

何も壊さず、以前のすべてのバグ修正が壊れていないことを確認するには、を使用する必要があります。コードレビュー単体テストおよびその他のプラクティス。 継続的な統合は、ソフトウェアを健全に保つための良い方法です。

他のヒント

このような場合、バージョン管理システムが自動的にマージできないため、手作業でマージする必要があります。優れた単体テストは、機能が失われないことを確認するのに役立ちます。

ブランチをトランクにマージして戻す前に、バージョン管理システムは、ブランチを展開してからのトランクの変更で作業コピーを更新します。この更新なしでマージすることはできません。これにより、次回のコミットでトランク内のすべてのバグ修正を取得できます。

ブランチでの作業に適した戦略は、トランクの変更を非常に定期的にブランチに移植することです。これにより、トランクから離れすぎず、最終的にトランクにマージするときに問題が発生することがなくなります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top