意味差分

2004 年 12 月 6 日

ほとんどのバージョン管理システムでは、アーティファクトのバージョン間の変更を使用および理解することに主眼が置かれています。これは、多くの場合、UNIX で変更を生成できるコマンドの diff と呼ばれています。テキストファイルやバイナリファイル用の優れた diff (およびマージ) アルゴリズムがあります。こうした diff の問題は、相当に不得意なことです。これらが実現するのは、2 つのアーティファクトバージョンを見て、一方からもう一方へ変換するための簡単な方法を生成することです。

意味差分では、単なる効果ではなく、変更の目的を理解します。

たとえば、ツールで抽出演出リファクタリングを実行して、クラスに変更を加えるとします。バージョン間の変更はこのリファクタリングのみです。現在のツールでは、プログラムテキストの変更はわかりますが、リファクタリングを行ったとは認識していません。その結果、2 つのバージョン間の diff を確認すると、変更はわかりますが、リファクタリングを強調表示するような方法ではわかりません。実際に行っていたことを認識していれば、これによるとマージが予想以上に厄介になる可能性もあります。

(これについて一般的な用語がある場合は教えてください。)