首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > CVS SVN >

SVN的根本使用

2012-07-02 
SVN的基本使用SVN 的基本指令介紹, 主要參考自下述:SubTrain - Open Source Trainings for Subversion: 教

SVN的基本使用

SVN 的基本指令介紹, 主要參考自下述:

  • SubTrain - Open Source Trainings for Subversion: 教導如何使用 SVN
  • Version Control with Subversion
  • Version Control with Subversion(中文版電子書)
  • Version Control with Subversion?PDF - 作者: 邱茂森(Google 找到的, 相當實用的介紹 和 說明)

    主要 SubTrain 的 PPT 前面頁數看一看, 基礎就大概都知道了, 後面頁數太進階了, 目前用不到, 以後再看. XD

    PS: 如果不知道 SVN 是什麼, 可見此文:?淺談版本控制系統, 裡面連結檔案看完, 應該就很清楚了?SVN的根本使用

    ?

    先來看 SVN Trunk/Tags/Branches 目錄 的 架構 和 用途:(英文說明轉載自 SubTrain PPT)

    • trunk: Main line of development(主幹, 主要開發都由在 trunk)
    • tags: Releases (想要 Release 的時後, 就標個 Tag, 以後可以依 Tag 來找回之前版本的資料)
    • branches: Preparation of release, bug fixing(分支, 可以將某些功能切出來, 或者 bug fix 等切成分支, 等做完後再用 Merge 合併回來)

      SVN 基本功能:

      Import: 將整個 project_directory 的資料 import 進 svn 裡面

      • svn import project_directory http://DOMAIN/svn_project
      • svn import project_directory file:///SVN_PATH/svn_project

        Checkout: (checkout 可簡寫成 co), 將資料 checkout 回來

        • svn co http://SVN_PATH/svn_project
        • svn co file:///SVN_PATH/svn_project
        • svn co -r 12 file:///var/lib/svn/dev/projects # 出第12版的 projcets code

          List: (list 可簡寫成 ls), 看上面有哪些檔案/資料

          • svn ls http://SVN_PATH/svn_project
          • svn ls file:///SVN_PATH/svn_project

            Update: (update 可簡寫成 up), 將目前資訊更新成 SVN 線上最新版本.

            • SVN_CHECKOUT_DIR$ svn up

              Commit: (commit 可簡寫成 ci), 將目前所做的修改 commit 回 svn

              • SVN_CHECKOUT_DIR$ svn ci

                Status: (status 可簡寫成 st), 看目前檔案/結構 跟 SVN 線上的版本有哪些不同

                • SVN_CHECKOUT_DIR$ svn st

                  Add: 將此 檔案/目錄 新增進 svn

                  • SVN_CHECKOUT_DIR$ svn add filename 或 svn add directory

                    MV: 改檔名, 並且此檔案之前紀錄還要繼續留下

                    • SVN_CHECKOUT_DIR$ svn mv filename new_filename

                      Revert: 還原這次的修改, 回到前一版的檔案狀態(未 commit 前可用)

                      • SVN_CHECKOUT_DIR$? svn revert [file | directory]

                        SVN 檔案狀態資訊:

                        • ?: 此檔案不存在 SVN 裡面
                        • A: 此次新增的檔案
                        • C: 此檔案已經有人改過, 合併不成功, 需要人工介入
                        • D: 此次移除的檔案
                        • M: 此檔案有修改過
                        • U: 此檔案有被更新過

                          再來是比較進階一點點, 下述範例轉載自 SubTrain 的教學 PPT:

                          建立一個 branch

                          • svn copy http://svnserver/calc/trunk http://svnserver/calc/branches/my-calc-branch -m 'create a branch'?

                            建立 Release Tags:

                            • svn copy http://svnserver/calc/trunk http://svnserver/calc/tags/Release-1.0.0 -m 'create Release tags for Release 1.0.0'

                              合併兩個版本的檔案 # 參考自:?用 Subversion 的 Merge 來 Undo

                              • svn merge -r REV1:REV2 {path/to/workingcopy}
                              • ?(UNDO) svn merge -r 1234:1233 ...
                              • ?(MERGE)svn merge -r 1233:1234 ...
                              • svn merge --dry-run -r 343:344 http://svn.example.com/repos/calc/trunk

                                有 "C" 狀態處理完後, 用 resolved? 將自動產生的檔案刪除, 才能正常 commit:

                                • svn resolved filename # 這樣子下就會把自動產生 diff 等的檔案刪除

                                  找版本間有什麼不同 diff:

                                  • svn diff # 自動以現在檔案跟 SVN 內最新版做 diff
                                  • svn diff -r9237:9238

                                    Info: 列出現在路徑, 版本編號, 最後一次修改日期 ... 等資訊

                                    • svn info

                                      Log: 如果沒輸入參數, 預設會把所有 commit log 都列出來

                                      • svn log
                                      • svn log -l 10 # 顯示 10 筆(最新 10筆 Log)
                                      • svn log -c 100 # 顯示 revision 100 的 Log
                                      • svn log -v -c 100 # 顯示? revision 100 的詳細 Log

                                        Propset (propset, pset, ps): 版本控制都有些特殊 Keyword 設定, 如 Id 就是最常用的, 設定方法如下:

                                        1. 在檔案內找地方加入 $Id$
                                        2. 設定此檔案要能吃 Id 的 Keyword: svn ps svn:keywords 'Id' filename (只需設一次即可, 之後就不用再設)
                                        3. svn ci 後, $Id$ 會自動代換成?$Id:filename 編號 年月日時分秒 username $?的資訊
                                        4. svn help ps 可以看到有哪些 Keyword 可以用, 即 Keyword 的說明.(ex: URL, Author, Date, Rev, Id 等.)

                                        其它 SVN Client:

                                        • Windows Client:?TortoiseSVN
                                        • SVK:?The SVK version control system

                                          SVK 相關介紹:

                                          • svk 分散式版本控制之道
                                          • 使用 svk 建立開發分支
                                          • Version Control with SVK

                                            其它相關網頁

                                            • Subversion 版本控制系統的基礎觀念?- 此篇有講版本系統該如何使用 等等的基本觀念, 建議閱讀.
                                            • Subversion post-commit 的解說以及注意事項
                                            • post-commit 如果沒有這行會無法自動 post-commit?- post-commit 前, 建議先跑 export LANG=zh_TW.UTF-8(看系統語系編碼設定)

热点排行