`

SVN 基本指令教學

    博客分类:
  • SCM
阅读更多

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

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

PS: 如果不知道 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:

SVK 相關介紹:

分享到:
评论

相关推荐

    784441086620773eclipse运行教学.zip

    2. **JSP基础**:理解JSP的基本结构和语法,包括HTML标签、JSP动作指令(如jsp:include和jsp:forward)、脚本元素(scriptlets、表达式和声明)以及JSP内置对象(如request、response、session等)。 3. **创建JSP...

    计算机系统平台配套教材PPT.rar

    这份"计算机系统平台配套教材PPT.rar"的压缩包文件,显然是为了辅助教学而设计的,旨在帮助学生深入理解计算机系统平台的基本原理、架构以及相关技术。下面我们将详细探讨其中可能涵盖的知识点。 1. **计算机系统...

    hello word_12_05_12

    标签“hello c”进一步确认了我们的推测,这可能是针对C语言初学者的一个教学资源,可能包括解释基本语法、变量定义、数据类型、运算符、控制结构(如if语句和循环)、函数使用等基础知识。 压缩包内的“svn_...

    前段学习视频

    - **框架入门**:介绍Vue.js的基本概念,包括数据绑定、指令、组件系统等核心特性。 - **状态管理**:教授如何使用Vuex进行复杂应用的状态管理,实现数据的高效处理与更新。 - **路由配置**:通过Vue Router实现SPA...

    C#基础教程(.NET编程语言)

    - **预处理器指令**:使用`#if`、`#else`、`#endif`等预处理器指令来控制代码的编译过程。 ##### 8.4 异常处理语句 - **try...catch块**:用于捕获和处理运行时可能出现的异常。 - **finally块**:无论是否发生...

    javaweb开发学习手册PPT

    理解Servlet生命周期、JSP指令、EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)是JavaWeb开发的基本功。 3. **MVC设计模式**:在JavaWeb开发中,Model-View-Controller(MVC)模式常被...

    jsp北大青鸟留言板

    1. **JSP基础**:理解JSP的基本语法,包括声明、脚本元素、指令等,以及如何在JSP页面中嵌入Java代码来处理动态内容。 2. **Servlet技术**:学习Servlet的生命周期,理解请求处理过程,以及如何通过doGet/doPost...

    精品校园课程设计

    "精品校园课程设计"是一个以JSP-Servlet技术为核心的课程设计项目,旨在提供全面的教学实践指导,帮助学生理解和掌握Web应用程序开发的核心技能。这个项目涵盖了从基础到高级的多个知识点,包括但不限于以下内容: ...

    软件综合课程设计2(B/S实现JSP开发)

    【软件综合课程设计2(B/S实现JSP开发)】是一项针对学生进行的实践性教学环节,旨在让学生通过实际操作,深入理解B/S架构(Browser/Server)在软件开发中的应用,尤其是使用JSP(JavaServer Pages)技术进行网页...

    JSH-PROSPERO:用Java制成的迷你外壳-开源

    版本控制学科的扩展还可能意味着JSH-PROSPERO支持与其他版本控制系统(如SVN或Mercurial)的互操作性,或者它可能内置了基本的版本控制概念,如差异比较和合并冲突解决的教育示例。 在压缩包子文件的文件名...

    qi_webIII_aula14:Web III的Atividade da aula 14

    "Criado usando Intelij IDEA Edu"揭示了项目是使用IntelliJ IDEA的教育版本创建的,这是一款流行的Java集成开发环境(IDE),特别适合初学者和教学用途。 结合【标签】"Java",我们可以推断这个课程项目专注于使用...

Global site tag (gtag.js) - Google Analytics