[[開発環境]] - マージ - 機能のマージ - ソースのマージ こではソースのマージについて扱う * 差分 [#md754bf2] 2つあるいはそれ以上のテキストファイル間の違いを差分という。 A,Bという2つのファイルがありAにたいし次のような操作をしたときに Bと内容が一致するような操作を検出し表示するプログラム の出力は差分と呼ばれる。 - Aのある個所に行を追加 - Aのある行の一部あるいは全部を修正 - Aのある行を削除 ** 差分の不確定性 [#z08d0293] A + p1 = B A + p2 = B p1 ≠ p2 となる p1,p2 が存在することがある。 (無意味に例えば1行削除して同じ内容の行を足すようなことをすればいくらでもあるけれど) ** diff [#g7099bdf] Unix系では以前からdiffコマンドが標準的に使われていた。 * パッチ [#o02bbb27] - 差分つーつの出力結果 - 差分ツールの出力結果を元にファイルの修正を行うこと。〜を当てる。 パッチ作業、差分ツールの出力をもとに自動的に行うプログラムもある。 そのようなプログラムは - もとのファイルA - もとのファイルAとBの差分p のA,pを入力としてAを編集しBの内容を生成する。 ** パッチのあいまい性というか柔軟性というか賢さ [#n9bb53b4] 入力としてAの類似ファイルA'に対しパッチpを当てることもできる。 この場合結果としてB'が結果として得られる。 - A+p=B - A'+p=B' この操作は必ずしも成功するわけでない。AとA'の差によってはプログラムが判断できない場合もあるし人間が判断できないばあいもある。 ** 賢くないパッチ当て [#yb4c118f] 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 [#n702627e] diffの出力を入力としてファイルの編集を行うコマンドとしてpatchというプログラムが ある。 * マージ [#rc85b9fd] ** 3wayマージ [#t4684a1b] * マージツール [#ufb50e97] ** 比較オプションの注意 [#z261491d] - 除外ファイル - 空白の差異を無視する - 改行の種類の問題 ** WinMerge [#m1d8e854] ** patch [#kd415d01] ** k3diff [#mdc15d04] ** p4merge [#gadeb0ce] ** VCSツールのマージ [#ydd28314] *** マージに失敗 [#f03846be] ** copy(上書きコピー) [#o8dcec63] * なぜマージするか [#zc0e7b5f] * マージ上の注意 [#s028c5f3] ** ツールは意味を考慮しない [#w7f174da] * バイナリファイルのマージ [#vfa64a2e] * Microsoft Office文書のマージ [#gf4d5aa9] ** Word [#j4923566] ** Excel [#ybbbe170]