Atomic commit?

在Study SubVersion 有一個技術名詞讓我感到很困惑, 一直到WANdisco CTO Rahul Bhargava 來訪,才恍然大悟, 我們先看看網路上的翻譯
1. 不可分割的送交
一個送交動作, 不是導致所有更動都送入檔案庫, 就是完全不會送入. 這讓發展人員以邏輯區段建立更動, 並送交更動.
2. 原子提交
至於簡中解釋就不再多說了
3.英文版SubVersion Book 的解釋
Atomic commits

A collection of modifications either goes into the repository completely, or not at all. This allows developers to construct and commit changes as logical chunks, and prevents problems that can occur when only a portion of a set of changes is successfully sent to the repository.

如 果初接觸SubVersion, 我相信很多人對段文字很困惑, Rahul 先生用一個簡單的例子來解釋為何要atomic commit, 他說如果你修改10個Folder裏面的10個檔案, 然後用CVS commit 到CVS Server, 可是commit到第5個folder的檔案, 網路突然斷線, 你猜會發生什麼事? 因為CVS並不support atomic commit 所以CVS是一個一個檔案upload 到 Repository 做 diff 比對,然後真正將diff的結果寫入CVS Server的meta data file , 所以網路斷線的結果照成前5個folder的檔案是commit成功, 後面的5個folder的檔案是commit 失敗, 所以造成local 端的工作目錄與Repository是處於out of sync 的狀態, 我這邊沒有實際測試CVS Client端例如WinCVS對於那些commit 失敗的檔案是如何顯示其狀態, 但是可想而知與Repository out of sync 必需要再做一次cvs update.
SubVersion 支援Atomic commit 狀況似乎就不一樣了, SubVersion 會在local端做diff的比對,然後將所有要commit檔案的difference提交給SVN Server, 所以就算網路斷線commit失敗, SVN沒有接受完整change sets並不會變更Repository的meta data與Revision , 自然而然就不會因為網路問題而造成out of sync的狀況. 所以這就是atomic commit的好處, 所以atomic commit中文該如何翻譯? 我個人是主張用微提交比較貼切些.
附帶打一下廣告, WANdisco 的 CVS Replicator 與 HADR 有 support Atomic commit , 因為所有的cvs commit都必須經過一個Proxy, 所以可以利用這種機制來達到cvs atomic commit的支援, 欲了解更多WANdisco 的產品, 可參考http://www.esast.com/Ver.TW/WANdisco_DL.htm

留言

這個網誌中的熱門文章

使用 AI 專門幫公司內部的流程做最佳化,這個團隊的角色會越來越重要

使用 New Bing 的 Chat 功能來當作閱讀 PDF/網頁文章/程式碼的輔助工具

我的Kindle 2支援中文顯示了