5

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

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

一方、「Hello World」が「Helo World」と表記されるバグ #749 のため、メイン トランクの関数 printHelloWorld() が変更されました。

さて、ここで私が目にする問題は次のとおりです。ブランチでマージしてメイン トランクに戻ると、ファイル sayHello.py 内の関数 printHelloWorld() で衝突を実験します。

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

前もって感謝します。

4

3 に答える 3

3

VCS プログラムはどのようにして私のブランチから Klingon サポートを追加し、バグ修正をメイントランクに保持する方法を知っていますか?

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

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

于 2009-01-08T09:08:16.883 に答える
0

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

于 2009-01-08T08:58:19.977 に答える
0

ブランチをトランクにマージする前に、バージョン管理システムは、ブランチアウト以降のトランクの変更で作業コピーを更新します。このアップデートなしではマージできません。これにより、次のコミットでトランク内のすべてのバグ修正を確実に取得できます。

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

于 2009-01-08T08:59:08.900 に答える