学习SVN

学习SVN

SVN 官网 Github SVN 源码

摘要

本篇博客对SVN的基础使用进行总结,以便加深理解和记忆

1.简介

SVN是Apache Subversion的缩写,是一个开源的源码版本控制系统

2.下载安装

SVN官方的发布版只提供了源码,没有提供各个平台对应的安装包或下载程序,不过可以在官网找到不同社区贡献者提供的安装包或下载程序页

  • SVN Server

    shell 复制代码
    # 检查安装
    svnserve --version
    # Centos安装
    yum install subversion
    # Ubuntu安装
    apt-get install subversion
  • SVN Client

    • Windows
      • 命令行工具:同上的VISUALSVN提供的SVN命令行工具
      • 可视化工具:tortoisesvn
    shell 复制代码
    # 检查安装
    svn --version

3.SVN生命周期

  • SVN Serve创建版本库repository:git服务端的git init

  • 检出checkout:相当于git clone

  • 更新update:相当于git pull,在本地修改前先从版本库拉取同步更新

  • 添加本地文件/文件夹到版本控制:相当于git add + commit

  • 提交commit:相当于git push

  • 解决冲突:SVN也是以行为单位管理代码和文件,若两人未提交修改同一行SVN则会进行自动合并,若为同一行则会提示冲突,需要手动确认

4.SVN Server搭建

  • 命令行

    • 创建版本库
    shell 复制代码
    svnadmin create {版本库文件夹路径}
    • 配置文件:配置文件目录在版本库文件夹路径中的conf文件夹内

      • svn服务配置文件svnserve.conf

        通用配置项

        [general]

        未鉴权用户访问版本库的权限:可读可写"write"、只读"read" 和 无访问权限"none"

        anon-access = read

        鉴权用户访问版本库的权限:可读可写"write"、只读"read" 和 无访问权限"none"

        auth-access = write

        指定用户密码配置文件位置,默认为当前文件夹下的相对路径,也可使用绝对路径

        password-db = passwd

        指定权限配置文件位置,默认为当前文件夹下的相对路径,也可使用绝对路径

        authz-db = authz

        指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件。

        realm = My First Repository

        其余配置项暂略

      • 用户密码配置文件passwd

        [users]

        格式:{用户名} = {密码}

        lyf = 15194572419

      • 权限配置文件authz

        用户组

        [groups]

        格式:{权限组名} = {用户名列表}

        harry_and_sally = harry,sally

        权限配置,格式:

        [{版本库名}:{路径}]

        @{权限组名} = {权限}

        [test:/home/thinker]
        thinker = r
        @harry_and_sally = rw

        • = r
      • VN启动模式

        • 单库svnserve模式:一个svnserve只能为一个版本库工作
        • 多库svnserve模式:将svnserve指定到版本库的上级目录
      • 启动SVN Serve服务

      shell 复制代码
      svnserve -d -r {目录} --listen-port {端口号,默认为3690}
      • SVN版本库访问地址:svn://192.168.0.1/{-r指定的路径}
  • 可视化工具

5.SVN Client使用

  • 命令行
shell 复制代码
# 1.导入项目
svn import {SVN地址} --message {"附加信息"}
# 2.检出项目
svn checkout {SVN地址} [--username={用户名}]
# 3.导出一份"干净"的项目
svn export {SVN地址} {本地项目名}
# 4.查看本地工作副本状态:?表示未添加到版本控制中,A表示已添加待提交
svn status
# 5.查看差异
# 5.1检查本地修改
svn diff
# 5.2检查工作副本和版本库
svn diff -r {版本号,如3} [{文件名}]
# 5.3比较两个版本库
svn diff -r {版本库号1:版本库号2} [{文件名}]
# 6.添加本地文件/文件夹到版本控制
svn add {文件或文件夹名}
# 7.更新与版本仓库一致
svn update [-指定版本]
# 8.提交
svn commit -m {"附加信息"}
# 9.撤回本地工作副本某文件/文件夹的修改
svn revert {文件名}
svn revert -R {文件夹名}
# 10.版本回退
svn merge -r {当前版本号:回退版本号} {文件名}
# svn merge -r 22:21 readme 
# 11.显示信息
svn log
# 12.仅查看不比较
svn cat
svn cat -r {版本号} [{文件名}]
# 13.在不检出的情况下查看版本库中的文件列表
svn list {SVN地址}
# 14.对文件进行改名和删除
svn mv b.c bb.c
svn rm d.c
# 15.为失败的事务清场
svn cleanup
# 16.SVN分支(本地操作)
# 16.1查看分支
svn copy {基版本库路径} {分支版本库路径}
# svn copy trunk/ branches/my_branch
# 16.2在新分支中修改
# 16.3切换到基版本库,将分支合并到基版本库
svn merge {分支版本库路径}
# 16.4将合并好的基版本库变化提交到版本库中
# 17.标签:主要用于项目开发中的里程碑,比如开发到一定阶段可以单独一个版本作为发布等
# 17.1未本地工作副本创建标签(新的目录将会被创建在 tags 目录下)
svn copy trunk/ tags/v1.0
# 17.2提交tag内容
svn commit -m "tags v1.0" 
  • 可视化工具(tortoisesvn)

TortoiseSVN安装及使用方法-CSDN博客

TortoiseSVN 使用教程 | 菜鸟教程 (runoob.com)

6.git与SVN的区别

  • Git是分布式的,而SVN不是,SVN依赖于网络

  • Git把内容按元数据方式存储,而SVN是按文件

  • Git没有一个全局版本号,而SVN有

  • Git的内容的完整性要优于SVN

  • Git的分支克隆更快

  • ...

相关推荐
peaceLT3 天前
【SVN】一文读懂Subversion(SVN)
svn
程序人生5185 天前
TortoiseSVN提交时忽略某些文件夹,不让它在提交列表中出现
svn
Casual_15736 天前
SVN 迁移到 GIT,并保留提交记录
git·svn
△曉風殘月〆9 天前
解决SVN蓝色问号的问题
运维·服务器·svn
前端开发菜鸟的自我修养12 天前
HTML5 Video标签的属性、方法和事件汇总,以及常用视频插件推荐
前端·javascript·svn·html·音视频·html5·video-codec
24203013 天前
SVN笔记-SVN安装
svn
baowxz16 天前
svn回退到以前历史版本修改并上传
svn·回退到历史版本·修改并上传·回退到以前版本
吴半杯18 天前
Docker安装SVN,搭建自己的本地版本仓库
docker·svn·容器
王夏奇22 天前
SVN的使用技巧
svn
taozi_518824 天前
码云中只用svn
svn