安妞大家
以下一樣是自學筆記
什麼是SVN(Subversion) ?
SVN(Subversion) 是一個自由/開放源碼的版本控制系統,
也就是說 Subversion 管理著隨時間改變的檔案(跟git 87%像)
這些檔案放置在一個中央檔案庫 (Repository) 中,
這個檔案庫很像一個尋常的檔案伺服器,不過它會記住每一次檔案的變動
你可以把檔案回復到舊的版本,或是瀏覽檔案的變動歷程
實際操作步驟(示範初始化&將新的項目加入SVN中&提交項目):
以下使用工具
TortoiseSVN
做示範
:
TortoiseSVN應該是最多人用的一套SVN Client軟體,可透過檔案總管在檔案或目錄上方便用滑鼠右鍵的選單完成SVN的操作。
1.在電腦內建一新資料夾作為檔案庫(Repository)使用,這邊我命名為test。
2.對這個資料夾按滑鼠右鍵選擇「TortoiseSVN」→「
在此建立檔案庫 Create repository here
」。
3.我在test裡面新增了一個"工作目錄"的資料夾,進入後按滑鼠右鍵選擇「
SVN取出(SVN checkout)
」,確認路徑是否正確,所謂的checkout就是將資料從檔案庫取出(目前是初始化)
3.1 如果對資料夾按右鍵選
Add,Add只是告訴SVN這些檔案需要版本管理,還沒有真的進入到SVN檔案庫
。
4.我新增一記事本將檔案存入於工作目錄資料夾,對檔案按右鍵選
送交Commit
,進入後可觀看歷史的log、寫入新log以及實際要Commit的檔案
寫入更新檔案的訊息
5.
Commit送交完成
(未提交完成前資料夾圖示上會有一個紅色驚嘆號 提交完成會變綠色打勾) 提交完成可操作其他功能!
常用的SVN指令
1.取得內容
check out(co):-> 初始化檢出 - 設定工作拷貝
svn checkout svn+ssh//your.remote-server.com/home/svn/test
svn co http網址
svn co file://
svn co-r file
update(up):更新為svn上最新版本
svn up
2.變更檔案
add:將檔案或目錄加進SVN 之後還要再commit才會真的加進SVN
svn add file-> 將新的項目加入 SVN 中
svn add folder
del,rm:將檔案或目錄刪除,之後還要再commit才會真的從svn刪除
svn del file 或svn rm file
svn move
3.看儲存庫變化
svn status -u
4.合併程式碼
svn diff(確認差異)
svn resolved
5.提交修正
Commit(ci):將目前有修改的commit到SVN
svn ci(全部有修改的都會commit)
svn ci file1 file2 file3(只將file123commit)
關於TortoiseSVN 的圖示
另外以下是其他技術文章,
有提到的SVN 與 Git 這兩個版本控制系統的優劣勢 也一併給大家看一下~
SVN 的優勢:
用法簡單,易上手,沒有 Git 那麼多的命令,對新手比較友好。
易於管理,對許可權的管理相當嚴格,可以按組、個人針對某個子目錄的許可權控制。
文件鎖定意義上真的非常有用,尤其是分工明確,且不願意讓別人碰自己程式碼的時候。
本地裝置上的檔案更小,更省記憶體,尤其是做大專案的時候,對電腦記憶體比較友好。
可以單獨檢出某個有許可權的目錄。
有全域性版本號——不需要手動編號。
SVN 的劣勢:
專案放在中央伺服器中,一旦伺服器出現什麼意外,就會損失慘重。
斷網意味著不能工作,比較扎心。聯內網還好,聯外網能卡得你懷疑人生。
人一多伺服器就有點遭不住,尤其是那種大型開源專案。
分支管理不靈活,svn分支是一個完整的目錄,且這個目錄擁有完整的實際檔案,這些操作都是在服務端進行同步的,* 不是本地化操作,如果要刪除分支,也是需要將遠端的分支進行刪除,這會導致大家都得同步。
Git的優勢:
速度快,靈活 可離線工作。
十分詳細且忠實地反映版本間的變化,能夠及時且方便地解決衝突。
擁有多個完整獨立的分支,且可以只選擇推送共享分支。
本地擁有完整的 git 版本庫,無論損壞了那一邊,都能夠通過克隆的方式恢復。
Git的劣勢:
許可權管理形同虛設,幾乎所有人都能獲取更改全部檔案,難保會不會有傻缺更改註釋不全的程式碼,導致報錯……而且也很容易被人扒原始碼掛網上。
模式上比 SVN 複雜,相對的學習週期更長。
官方網站及資料參考來源:
TortoiseSVN官方網站
★
版本控制工具SVN-常用基本指令/狀態表示
SVN 與 Git 的優缺點
SVN筆記
TortoiseSVN 常用指令介紹
SVN 筆記 - 基本指令
svn版控使用
Git和Subversion的命令比較表
以上是本人SVN的自學筆記,有錯再請不吝指正謝謝!