當我們使用版本控制的時候,我們覺得他是如此便捷好用,但是真正爲什麼要使用SVN呢?等等很多問題,先在這裏總結基本的知識點:
1.什麼是SVN ?
SVN(Visual SVN Server) 是集中式的版本控制,svn服務器有2種運行方式:獨立服務器和藉助apache運行。對於數據存儲有兩種方式:BDB(一種事務安全型表類型)和FSFS(一種不需要數據庫的存儲系統)。因爲BDB方式在服務器中斷時,有可能鎖住數據,所以還是FSFS方式更安全一點。(DBD和FSFS是什麼樣的結構?)
有一個簡單但不十分精確的比喻:SVN = 版本控制 + 備份服務器;我麼可以把SVN當成自己的備份服務器,它不但充當我們每次上傳到服務器上的檔案內容的保管員,也是每次代碼變更的監控者,並且自動的賦予每次的變更的一個版本。用一個圖我們可以清楚它的原理如下圖:
2.爲什麼要使用SVN?
- 備份工作檔案十分重要,我們永遠不知道計算機的硬盤何時會壞掉。
- 版本控管非常重要。你無法保證手頭上最新版本永遠都是對的。
- 團隊之間的數據同步也是非常重要的。很多時候,除了你個人外,還有其它的團隊成員也需要你的數據。
3.建立SVN Repository
基本操作:
2)提交(commit)在工作拷貝中作出修改並提交:在工作拷貝中隨便打開一個文件,作出修改,然後“右鍵-> SVN Commit... ”。這樣我們就把修改提交到了版本庫,版本庫根據情況存儲我們提交的數據。
4)更新版本(Update to Latest Revision )
4.SVN權限配置
2)Subversion 提供了面向目錄的帳戶權限管理功能,通過它,我們就可以很精確地實現項目目錄的訪問控制。
- filename.mine 存儲者本地的修改過的文件。
- filename.rOLDREV 存儲者上次update的基礎版本文件 。
- filename.rNEWREV 存儲着客戶端剛從服務器上接收來的版本。
- 手動合併代碼,解決衝突。
- 選擇一個衝突出現時產生的臨時文件來覆蓋當前文件。
- 運行svn resolved filename 命令來放棄當前文件的本地的所有修改。
- 在eclipse中安裝Subclipse 的插件並做好配置。
- 在eclipse中新建工程,建一個包以及類,並完成相關代碼的編寫和執行。
- 新建一個svn資源庫位置,並將所建的工程import 到svn資源庫位置。過程如下:
2. 回到JAVAEE的視圖,將項目import到服務器服務器上:鼠標右鍵點擊項目->Team->Share Project ,選擇svn,使用剛纔指定的svn倉庫的url。在svn視圖中,項目已經導入到倉庫中。
- 在修改文件時,要進行各種SVN操作,比如修改後commit,提交不成功時需要update,這時成功提交併保持與版本庫一致;當我們要重新想恢復提交前的版本時,需要進行比較並選擇loacl history。不僅僅是這麼簡單的操作,還有一些列方便管理代碼的操作。有待在繼續熟練使用
C:\Documents and Settings\Administrator>svn ?
用法: svn <subcommand> [options] [args] Subversion 命令行客戶端,版本 1.6.6。
使用“svn help <subcommand>” 顯示子命令的幫助信息。
使用“svn --version”查看程序的版本號和版本庫訪問模塊,或者 使用“svn --version --quiet”只查看程序的版本號。
大多數的子命令可接受文件或目錄參數,對目錄進行遞歸處理。 如果沒有指定參數,默認對當前目錄(包含當前目錄)遞歸處理。
可用的子命令:
add:把文件和目錄納入版本控制,通過調度加到版本庫。它們會在下一次提交時加入。
blame (praise, annotate, ann):輸出指定文件或URL的追溯內容,包含版本和作者信息。
cat:輸出指定文件或URL的內容。
changelist (cl):耦合(或解耦)文件與修改列表 CLNAME。
checkout (co):從版本庫簽出工作副本。
cleanup: 遞歸清理工作副本,刪除鎖,繼續未完成操作,等等。
commit (ci): 把工作副本的修改提交到版本庫。
copy (cp): 在工作副本或版本庫中複製數據,保留歷史。
delete (del, remove, rm): 從版本庫中刪除文件和目錄。
diff (di): 顯示兩個版本或路徑的差異。
export: 產生一個無版本控制的目錄樹副本。
help (?, h): 描述本程序或其子命令的用法。
import: 將未納入版本控制的文件或目錄樹提交到版本庫。
info: 顯示本地或遠程條目的信息。
list (ls): 列出版本庫中的目錄內容。
lock: 鎖定版本庫中的路徑,使得其他用戶不能向其提交修改。
log: 顯示一組版本與/或文件的提交日誌信息。
merge: 將兩個源差異應用至工作副本。
mergeinfo: 顯示合併的相關信息。
mkdir: 創建納入版本控制的新目錄。
move (mv, rename, ren): 在工作副本或版本庫中移動或改名文件或目錄。
propdel (pdel, pd): 刪除目錄、文件或版本的屬性。
propedit (pedit, pe): 使用外部編輯器編輯屬性。
propget (pget, pg): 顯示目錄、文件或版本的屬性取值。
proplist (plist, pl): 列出目錄、文件或版本的所有屬性。
propset (pset, ps): 設定目錄、文件或版本的屬性。
resolve: 解決工作副本中目錄或文件的衝突。
resolved: 刪除工作副本中目錄或文件的“衝突”狀態。
revert: 將工作副本文件恢復到原始版本(恢復大部份的本地修改)。
status (stat, st): 顯示工作副本中目錄與文件的狀態。
switch (sw): 更新工作副本至不同的 URL。
unlock: 解除工作副本或URL的鎖定。
update (up): 更新版本。
回到
JAVAEE
視圖
,
將項目
import
到服務器服務器上
:
鼠標右鍵點擊項目
->Team->Share Project
選擇
SVN
使用剛纔定位的倉庫
在
SVN
視圖裏可以看到
,
項目已經導入
先寫到這裏,下一篇將寫一些基本操作。