安妞大家 /images/emoticon/emoticon42.gif
以下一樣是自學筆記

什麼是SVN(Subversion) ?

SVN(Subversion) 是一個自由/開放源碼的版本控制系統,
也就是說 Subversion 管理著隨時間改變的檔案(跟git 87%像)

這些檔案放置在一個中央檔案庫 (Repository) 中,
這個檔案庫很像一個尋常的檔案伺服器,不過它會記住每一次檔案的變動

你可以把檔案回復到舊的版本,或是瀏覽檔案的變動歷程
svn tutorial

實際操作步驟(示範初始化&將新的項目加入SVN中&提交項目):

以下使用工具 TortoiseSVN 做示範 SVN烏龜
TortoiseSVN應該是最多人用的一套SVN Client軟體,可透過檔案總管在檔案或目錄上方便用滑鼠右鍵的選單完成SVN的操作。

1.在電腦內建一新資料夾作為檔案庫(Repository)使用,這邊我命名為test。
2.對這個資料夾按滑鼠右鍵選擇「TortoiseSVN」→「 在此建立檔案庫 Create repository here 」。
https://ithelp.ithome.com.tw/upload/images/20220517/20135530ekM2Z9vk1t.png

3.我在test裡面新增了一個"工作目錄"的資料夾,進入後按滑鼠右鍵選擇「 SVN取出(SVN checkout) 」,確認路徑是否正確,所謂的checkout就是將資料從檔案庫取出(目前是初始化)
https://ithelp.ithome.com.tw/upload/images/20220517/20135530KGLKny1ctU.png
https://ithelp.ithome.com.tw/upload/images/20220517/20135530DtCdeaioTj.png
https://ithelp.ithome.com.tw/upload/images/20220517/20135530jLu1FZnChZ.png

  • 3.1 如果對資料夾按右鍵選 Add,Add只是告訴SVN這些檔案需要版本管理,還沒有真的進入到SVN檔案庫
    https://ithelp.ithome.com.tw/upload/images/20220517/20135530aYsApweFRF.png

    4.我新增一記事本將檔案存入於工作目錄資料夾,對檔案按右鍵選 送交Commit ,進入後可觀看歷史的log、寫入新log以及實際要Commit的檔案
    https://ithelp.ithome.com.tw/upload/images/20220517/20135530CeEGhEJqjq.png
    寫入更新檔案的訊息
    https://ithelp.ithome.com.tw/upload/images/20220517/20135530B0E4jNr1UB.png
    5. Commit送交完成
    https://ithelp.ithome.com.tw/upload/images/20220517/201355305iUFehX7As.png
    (未提交完成前資料夾圖示上會有一個紅色驚嘆號 提交完成會變綠色打勾) 提交完成可操作其他功能!
    https://ithelp.ithome.com.tw/upload/images/20220517/20135530sZN6T5vL0y.png

    常用的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 複雜,相對的學習週期更長。
  • 官方網站及資料參考來源:
    Yes
    TortoiseSVN官方網站
    版本控制工具SVN-常用基本指令/狀態表示
    SVN 與 Git 的優缺點
    SVN筆記
    TortoiseSVN 常用指令介紹
    SVN 筆記 - 基本指令
    svn版控使用
    Git和Subversion的命令比較表

    以上是本人SVN的自學筆記,有錯再請不吝指正謝謝!