### Subversion的歷史
早在2000年,CollabNet, Inc. (`http://www.collab.net`) 開始尋找CVS替代產品的開發人員,CollabNet提供了一個協作軟件套件SourceCast,它的一個組件是版本控制系統。盡管SourceCast在初始時使用CVS作為其版本控制系統,但是CVS的局限性在一開始就很明顯,CollabNet知道遲早要找到一個更好的替代品。遺憾的是,CVS成為了開源世界*事實上的*標準,因為*沒有*更好的產品,至少是沒有可以自由使用的。所以CollabNet決定寫一個新的版本控制系統,建立在CVS思想之上的,但是修正其錯誤和不合理的特性。
2000年2月,他們聯系*Open Source Development with CVS*(Coriolis, 1999)的作者Karl Fogel,并且詢問他是否希望為這個新項目工作,巧合的是,當時Karl正在與朋友Jim Blandy討論設計一個新的版本控制系統。在1995年,他們兩個曾經開辦一個提供CVS支持的公司Cyclic Software,盡管他們最終賣掉了公司,但還是天天使用CVS進行日常工作,在使用CVS時的挫折最終促使他們認真地去考慮如何管理標記版本的數據,而且他們當時不僅僅提出了“Subversion”這個名字,并且做出了Subversion版本庫的基礎設計。所以當CollabNet提出邀請的時候,Karl馬上同意為這個項目工作,同時Jim也得到了他的雇主,RedHat軟件贊助他到這個項目并提供了一個寬松的時間。CollabNet雇傭了Karl和Ben Collins Sussman,詳細的設計從三月開始,在Behlendorf 、CollabNet、Jason Robbins 和 Greg Stein(當時是一個獨立開發者,活躍在WebDAV/DeltaV系統規范階段)的恰當激勵的幫助下,Subversion很快吸引了許多活躍的開發者,結果是許多有CVS經驗的人們很樂于有機會為這個項目做些事情。
最初的設計小組固定在簡單的目標上,他們不想在版本控制方法學中開墾處女地,他們只是希望修正CVS,他們決定Subversion匹配CVS的特性,保留相同的開發模型,但不復制CVS明顯的缺陷。盡管它不需要成為CVS的繼任者,它也應該與CVS保持足夠的相似性,使得CVS用戶可以輕松的做出轉換。
經過14個月的編碼,2001年8月31日,Subversion自己能夠“成為服務”了,開發者停止使用CVS保存Subversion的代碼,而使用Subversion本身。
當CollabNet開始這個項目的時候,曾經資助了大量的工作(它為全職的Subversion開發者提供薪水),Subversion像許多開源項目一樣,被一些激勵知識界精英的寬松透明的規則支配著。CollabNet的版權許可證完全符合Debian的自由軟件方針,也就是說,任何人可以自由的下載,修改和重新發布,不需要經過CollabNet或其他人的允許。
- 第1章介紹
- Subversion的歷史
- Subversion的特性
- Subversion的架構
- 安裝Subversion
- Subversion的組件
- 快速入門
- 第2章基本概念
- 版本模型
- Subversion實戰
- 摘要
- 第3章指導教程
- 導入
- 修訂版本: 號碼、關鍵字和日期,噢,我的!
- 初始化的Checkout
- 基本的工作周期
- 檢驗歷史
- 其他有用的命令
- 摘要
- 第4章分支與合并
- 使用分支
- 在分支間拷貝修改
- 常見用例
- 轉換工作拷貝
- 標簽
- 分支維護
- 摘要
- 第5章版本庫管理
- 版本庫的創建和配置
- 版本庫維護
- 添加項目
- 摘要
- 第6章配置服務器
- 網絡模型
- svnserve,一個自定義的服務器
- httpd,Apache的HTTP服務器
- 支持多種版本庫訪問方法
- 第7章高級主題
- 屬性
- Peg和實施修訂版本
- 外部定義
- 賣主分支
- 本地化
- Subversion版本庫URL
- 第8章開發者信息
- 使用API
- 進入工作拷貝的管理區
- WebDAV
- 使用內存池編程
- 為Subversion做貢獻
- 第9章Subversion完全參考
- svn add
- svn blame
- svn cat
- svn checkout
- svn cleanup
- svn commit
- svn copy
- svn delete
- svn diff
- svn export
- svn help
- svn import
- svn info
- svn list
- svn log
- svn merge
- svn mkdir
- svn move
- svn propdel
- svn propedit
- svn propget
- svn proplist
- svn propset
- svn resolved
- svn revert
- svn status
- svn switch
- svn update
- svnadmin
- svnadmin create
- svnadmin deltify
- svnadmin dump
- svnadmin help
- svnadmin hotcopy
- svnadmin list-dblogs
- svnadmin list-unused-dblogs
- svnadmin load
- svnadmin lstxns
- svnadmin recover
- svnadmin rmtxns
- svnadmin setlog
- svnadmin verify
- svnlook
- svnlook author
- svnlook cat
- svnlook changed
- svnlook date
- svnlook diff
- svnlook dirs-changed
- svnlook help
- svnlook history
- svnlook info
- svnlook log
- svnlook propget
- svnlook proplist
- svnlook tree
- svnlook uuid
- svnlook youngest
- svnserve
- svnversion
- mod_dav_svn Configuration Directives
- 附錄A.Subversion對于CVS用戶
- 目錄的版本
- 更多離線操作
- 區分狀態和更新
- 分支和標簽
- 元數據屬性
- 沖突解決
- 二進制文件和轉化
- 版本化的模塊
- 認證
- 轉化CVS版本庫到Subversion
- 附錄C.WebDAV和自動版本化
- 自動版本化交互性
- Subversion和DeltaV
- 術語表