• SVN基本指令 .


    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 等的档案删除

        遇到冲突的时候,以下是解决办法。

        A.(p) postone 延迟解决
        B.(df) diff-full 显示所有冲突的内容
        C.(e) edit 启动编辑器解决冲突
        D.(r) resolve 标识冲突已经解决
        E.(mf) mine-full 用我的版本覆盖他人的修改
        F.(tf) theirs-full 用他人的版本覆盖我的修改
        G.(l) lanuch 启动其他工具来解决冲突
        H.(h) help 启动帮助信息

          虽然SVN提供了比较差异和解决冲突的方法,但避免冲突的最好方法永远只有一个:明确的分工和良好的沟通,尽量避免多个人同时修改同一份文件。如果不能避免,那么最好指定一个人在提交前负责合并各人的更新,然后一次性提交。


    •    找版本间有什么不同 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
    1.    Propset (propset, pset, ps): 版本控制都有些特殊 Keyword 设定, 如 Id 就是最常用的, 设定方法如下:
    2.    在档案内找地方加入 $Id$
    3.    设定此档案要能吃 Id 的 Keyword: svn ps svn:keywords 'Id' filename (只需设一次即可, 之后就不用再设)
    4.    svn ci 后, $Id$ 会自动代换成 $Id:filename 编号 年月日时分秒 username $ 的信息
    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(看系统语系编码设定)

  • 相关阅读:
    PHP7 学习笔记(一)Ubuntu 16.04 编译安装Nginx-1.10.3、 PHP7.0.9、Redis3.0 扩展、Phalcon3.1 扩展、Swoole1.9.8 扩展、ssh2扩展(全程编译安装)
    【测试笔记】Redis学习笔记(十二)性能测试
    【官方文档】Nginx负载均衡学习笔记(三) TCP和UDP负载平衡官方参考文档
    高频交易的外部网络连接技术
    国内有哪些顶级高频交易 (HFT) 团队?
    Linux低延迟服务器系统调优
    什么是高频交易系统?
    HFT is a good industry as a computer scientist
    MongoShake——基于MongoDB的跨数据中心的数据复制平台
    QuantStart Content Survey 2020
  • 原文地址:https://www.cnblogs.com/zhouwenwu/p/2373861.html
Copyright © 2020-2023  润新知