From:http://www.ibm.com/developerworks/cn/java/j-lo-apache-subversion/php
Subversion 的版本庫(repository),就是位於服務器端,統一管理和儲存數據的地方。本文中,咱們以 Linux 爲例,介紹在服務器端配置和管理 Subversion 版本庫的基本方法。java
要建立一個版本庫,首先要肯定採用哪一種數據存儲方式。在 Subversion 中,版本庫的數據存儲有兩種方式,一種是在 Berkeley DB 數據庫中存放數據;另外一種是使用普通文件,採用自定義的格式來儲存,稱爲 FSFS。數據庫
兩種存放方式各有優缺點,讀者能夠參考 http://svnbook.org/ 上面的文檔來了解二者詳細的比較和區別,這裏,咱們僅引用上述文檔當中的簡單對照表,給出一個簡明的比較。apache
特性 | Berkeley DB | FSFS |
---|---|---|
對操做中斷的敏感 | 很敏感;系統崩潰或者權限問題會致使數據庫「塞住」,須要按期進行恢復。 | 不 敏感 |
可只讀加載 | 不能 | 可 以 |
存儲平臺無關 | 不能 | 可 以 |
可從網絡文件系統訪問 | 不能 | 可 以 |
版本庫大小 | 稍大 | 稍 小 |
擴展性:修訂版本樹數量 | 無限 制 | 某些本地文件系統在處理單一目錄包含上千個條目時會出現問題。 |
擴展性:文件較多的目錄 | 較慢 | 較慢 |
檢出最新代碼的速度 | 較快 | 能夠 |
大量提交的速度 | 較慢,但時間被分配在整個提交操做中 | 較 快,但最後較長的延時可能會致使客戶端操做超時 |
組 訪問權處理 | 對於用戶的 umask 設置十分敏感,最好只由一個用戶訪問。 | 對 umask 設置不敏感 |
功能成熟時間 | 2001 年 | 2004 年 |
肯定了具體的數據存儲類型,只要在命令行當中執行 svnadmin
命令就能夠建立一個 Subversion 版本庫,命令以下:服務器
svn上傳文件的存儲:網絡
上傳的文件放在SVN服務器的哪一個目錄下
SVN服務器版本庫有兩種格式,
一種爲FSFS,
一種爲BDB
把文件上傳到SVN版本庫後,上傳的文件再也不以文件原來的格式存儲,而是被svn以它自定義的格式壓縮成版本庫數據,存放在版本庫中。
若是是FSFS格式,這些數據存放在版本庫的db目錄中,裏面的revs和revprops分別存放着每次提交的差別數據和日誌等信息
首先 svn help 能夠看到 svn 所支持的所有命令:
命令很少,若是用過Tortoise SVN的客戶端,從字面上也不難理解這些命令所表明的含義。svn
首先我須要把個人項目 Checkout 出來。這個過程使用的命令是 svn checkout 或者 svn co工具
提交代碼post
對代碼進行修改後,須要提交代碼到SVN中,這時要用到 svn commit / svn ci 命令。提交的時候,最好使用 –m 帶上註釋,這樣從此查看的時候也比較方便。編碼
更新文件
每次開始編碼前,最好更新一下代碼,看看其餘人是否修改過代碼。更新的命令爲: svn update / svn up
能夠切換到但願更新的目錄,直接執行 svn update 而沒必要跟特定的文件或目錄,也能夠本身指定須要更新的文件或目錄。
查看日誌
這個功能在發現代碼發生了變化,須要瞭解都有哪些變化的時候特別有用,前提是每一次的更新你們都寫了註釋。
使用命令 svn log :
[root@localhost config]# svn log config.php
------------------------------------------------------------------------
r79832 | shiqiang | 2010-06-29 11:16:35 +0800 (Tue, 29 Jun 2010) | 1 lineChange Config
------------------------------------------------------------------------
r76996 | shiqiang | 2010-06-22 13:51:33 +0800 (Tue, 22 Jun 2010) | 1 lineactive $Id$s
基本上SVN的經常使用命令有這兩個就能夠開始工做了,可是SVN其實功能特別強大,在DIFF和Conflict處理方面,尚未研究過Linux下如何進行解決,另外還有Tag和Branch的功能。用好了SVN能夠對於項目管理提供一個很是好的工具。