svn基本概念

什么是svn

svn全称Subversion,他是一个免费/开源 的 版本控制系统 (version control system, 简称 VCS), 也就是说, Subversion 可以跨越时间对文件和目录, 以及它们的修改进行管理. 这就允许你恢复 数据的旧版本, 或检查数据的修改历史. 由于这个特点, 很多人把版本控制系统 看成是一种 “时间机器”

Subversion 可以跨越网络进行操作, 这就允许多个用户在不同的机器上工作. 从某种程度上讲, 允许用户在各自的空间里修改和管理同一组数据可以促进团队 协作, 因为修改不再是单线进行, 开发速度会更快. 由于所有的工作都被记录在 案, 也就不用担心并行开发会降低软件的质量—如果出现不正确的修改, 只 要撤消那一次修改即可.

某些版本控制系统同时也是 软件配置管理 (software configuration management, 简称 SCM) 系统. 这种系统经过精巧的设计,专门用于管理源代码树, 具备许多与软件开发有关的 特性—例如理解编程语言, 或者提供了程序构建工具. 但 Subversion不是 SCM, 它是一个通用系统, 可以管理 任意 类型的文件集合.

svn框架图

svn框架图

svn工作流程图

svn工作流程图

svn组件

  • svn 客户端命令行工具
  • svnversion 用于报告工作副本状态 (就项目的版本号而言) 的工具
  • svnlook 可以直接检查仓库的工具
  • svnadmin 用于创建, 调整或修复 Subversion 仓库的工具
  • mod_dav_svn 可插拔的 Apache HTTP 服务器模块, 该模块允许用户通过网络访问 仓库
  • svnserve 一个定制的, 可独立运行的服务器程序, 可以以守护进程方式运行, 也可以被 SSH 调用, 这是另一种允许用户通过网
    络访问仓库的方法
  • svndumpfilter 过滤 Subversion 仓库转储数据流的程序
  • svnsync 可以跨越网络对仓库进行增量镜像备份的程序
  • svnrdump 可以跨越网络对仓库历史进行转储和加载的程序
  • svnmucc 该工具支持在没有工作副本的情况下, 在一个单独的提交中对多个 仓库执行基于 URL 的操作

仓库地址

模式 访问方式
file:/// 直接仓库访问 (仓库在本地磁盘上)
http:// 通过 WebDAV 协议访问可识别 Subversion 的 Apache 服务器
https:// 和 http:// 相同, 但是增加了 SSL 封装 (加密和授权)
svn:// 通过传统的协议访问 svnserve 服务器
svn+ssh:// 和 svn:// 相同, 但是增加了 SSH 隧道

svn工作副本四种状态

  • 当前未修改的:文件在工作副本中未被修改, 并且在工作版本号之后还没有人提交过该文件的修改. 对文件执行 svn commit 和 svn
    update 都不会产生任何效果.
  • 当前已修改的:文件在工作副本中已被修改, 并且在一次更新以来还没有人 向仓库提交过该文件的修改. 本地有未提交的修改, 于是执行 svn commit 将会成功地把修改提交到仓库中, 而 svn update 不会产生任何效果.
  • 过时未修改的:文件在工作副本中未被修改, 但是在上一次更新之后有人往 仓库提交了该文件的修改. 为了让文件和最新版本保持同步, 应 该执行更新操作. 对文件执行 svn commit 不会产生任何效果, 执行 svn update 将 把仓库中的最新修改合并到文件中.
  • 过时且已修改的:文件在本地工作副本和仓库都被修改了. 对文件执行 svn commit 会由于文件已过时而失败. 首先应该更新文件, 命令svn update 尝试 把仓库的修改合并到本地. 如果 Subversion 不能自动地以一种 合理的方式完成合并, 就会把冲突交由用户来解决
posted @ 2021-12-08 11:39  冰块好冰  阅读(565)  评论(0)    收藏  举报