開発環境 - マージ

こではソースのマージについて扱う

差分

2つあるいはそれ以上のテキストファイル間の違いを差分という。

A,Bという2つのファイルがありAにたいし次のような操作をしたときに Bと内容が一致するような操作を検出し表示するプログラム の出力は差分と呼ばれる。

差分の不確定性

A + p1 = B
A + p2 = B
p1 ≠ p2

となる p1,p2 が存在することがある。

(無意味に例えば1行削除して同じ内容の行を足すようなことをすればいくらでもあるけれど)

diff

Unix系では以前からdiffコマンドが標準的に使われていた。

パッチ

パッチ作業、差分ツールの出力をもとに自動的に行うプログラムもある。

そのようなプログラムは

のA,pを入力としてAを編集しBの内容を生成する。

パッチのあいまい性というか柔軟性というか賢さ

入力としてAの類似ファイルA'に対しパッチpを当てることもできる。 この場合結果としてB'が結果として得られる。

この操作は必ずしも成功するわけでない。AとA'の差によってはプログラムが判断できない場合もあるし人間が判断できないばあいもある。

賢くないパッチ当て

 orig.  new
1:a      a
2:b      b
3:c      c 
4:d   → d
5:e      e
6:X      Y
7:f      f
 orig.   BAD 
1:A      A
2:a      a
3:b      b  
4:c   → c
5:d      d
6:e      Y
7:X      X
8:f      f
 orig.  BAD
1:a      a
2:b      b
3:X      Y
4:d   → d
5:e      e
6:X      Y
7:f      f
 orig.  expected
1:a      a
2:b      b
3:X      X 
4:d   → d
5:e      e
6:X      Y
7:f      f

patch

diffの出力を入力としてファイルの編集を行うコマンドとしてpatchというプログラムが ある。

マージ

3wayマージ

マージツール

比較オプションの注意

WinMerge

patch

k3diff

p4merge

VCSツールのマージ

マージに失敗

copy(上書きコピー)

なぜマージするか

マージ上の注意

ツールは意味を考慮しない

バイナリファイルのマージ

Microsoft Office文書のマージ

Word

Excel


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS