Can you summarize the following document?
        
  合併演算法是一個熱點研究領域,有多種不同的演算法。

  三路合併(three-way merge),首先考慮對檔案A、檔案B以及它們的共同祖先檔案C做差異分析。對於檔案中的每節(sector),如果上述三個檔案中有兩個檔案該節的內容一致,那麼拋棄檔案C中該節的內容,保留與檔案C中不同的內容放到結果檔案中。如果該節在三個檔案中都不同,那麼這個衝突需要手工合併。  三路合併被程式diff3實現,是基於檔案鎖的版本控制系統到基於合併的版本控制系統轉變的核心。被CVS廣泛使用.

  三路合併演算法的基礎技術是找到被合併檔案的共同祖先檔案。在遇到十字交叉合併(criss-cross merge)時,不存在獨一無二最小共同祖先。  Git採取了遞迴三路合併(Recursive three-way merge),對沒有共同祖先的一對檔案遞迴建立虛擬祖先。這一方法還可以用於有向無環圖。

  修補包是一個檔案,包含另一個檔案的改變的描述。Unix傳統使用修補包傳播一個文字檔案的改變,這個修補包可用命令"diff -u"生成,然後用命令patch把修補包應用到一個文字檔案。 但patch程式也可以把一個修補包用於與最初產生該包的檔案不是完全相同的檔案。這稱作模糊修補包應用(fuzzy patch application)。 GNU arch採用了這種方法。但模糊修補包應用是一種不太可信的辦法,在上下文太少情況下可能會誤用。

  編織合併(Weave merge)演算法跟蹤每行是被增加或是刪除,產生結果資訊。如果在一個版本中該行被刪除,則結果檔案就不包含該行。BitKeeper、GNU Bazaar、Codeville採用了此方法,對三路合併出錯的情形能產生正確結果。

  修補包交換(Patch commutation)改變修補包的應用順序,形成一線性歷史。效果上,當兩個修補包產生於同一個環境,合併時,一個修補包被重寫以便它可以在另一個修補包執行完畢後才使用。例如,修補包A在檔案F的行7之後增加了行"X",修補包B在檔案F的行310之後增加了行"Y",B需要重寫為對檔案F的行311之後增加行"Y",以便能在修補包A使用後再使用修補包B。  Darcs、Git (稱作"rebasing")採用了這一方法。  "patchutils" package中的Unix程式flipdiff實現了修補包交換.
在版本控制中,合併(英語:merging),也稱為整合(英語:integration),是指當一個檔案在多個獨立分支中被修改後如何合併這些修改成為一個檔案的操作。