最全面的SVN使用方式【TortoiseSVN详解及常用命令】

什么是 SVN

  • SVN 全称 SubVersion
  • SVN 是近年来崛起的版本管理工具,是 CVS 的接班人。目前,绝大多数软件公司都使用 SVN 作为代码版本管理软件。

特点

  • 操作简单,入门容易
  • 支持跨平台(Window/Linux/MacOS)
  • 支持版本回退功能(时间机器)

获取 SVN 软件

属于 C/S 结构软件(客户端与服务器端)

服务端软件:VisualSVN

客户端软件:TortoiseSVN

win64

win64 中文包

win32

win32 中文包

点击下一步直至安装结束即可。

服务端配置

一、创建版本仓库

  1. 首先在 SVN 服务器端创建一个公有目录 WebApp 做为项目目录

  2. 在 WebApp 目录下创建 Shop 文件夹,做为 Shop(版本仓库)

  3. 创建版本仓库,基本语法: svnadmin create Shop 文件夹路径(Shop 仓库) 如果 Shop 仓库配置成功,那么 Shop 文件夹会显示以下目录结构

二、启动服务端

基本语法: svnserve -d(后台运行) -r(监管目录) 版本仓库目录

通过以上指令,我们的 svn://localhost 或 ip 地址就可以直接指向 Shop 版本仓库

三、客户端连接

Apache http://localhost 或(ip 地址)访问到 htdocs 目录下的相关文件(监管)

SVN svn://localhost 或(ip 地址)访问到相关数据仓库(如 Shop 仓库)

  • 如果有多个项目的话,svnserve可以启动项目的父目录,客户端连接的时候只需要带上项目的文件路径即可
  • http://localhost/Shop

四、权限控制

匿名用户权限控制

默认情况下,SVN 服务器是不允许匿名用户上传文件到服务器端的,所以必须更改系统相关配置文件。

更改第 19 行代码,去除前面的空格以及#号,更改其值为 write(可读写)

账号权限控制
  1. 关闭匿名用户权限控制 svnserve.conf文件

  2. 开启 authz文件和passwd文件

  3. 编写passwd文件相关用户名与密码

  4. 编写authz授权文件

    • 设置 groups 组

    • 给 groups 设置权限

      组中如有多个用户用逗号分开,如:admin = admin,root

      • r:可读
      • w:可写
      • *:其他所有用户
  5. 配置成功后重新拉取或提交文件需要用户登录

svn 客户端软件连接 SVN 服务器

1. Checkout 检出

首先在你的项目目录鼠标右键 TortoiseSVN 版本库浏览器输出 SVN 服务器地址:

svn://SVN 服务器地址 Shop 项目(仓库)

检出成功之后该目录下会多出一个.svn 隐藏文件,代表检出成功

TortoiseSVN图标集

常规图标

含义:当客户端文件与服务器端文件完全同步时,系统会显示以上图标

冲突图标

含义:当客户端提交的文件与服务器端数据有冲突,系统会显示以上图标

删除图标

含义:当服务端数据已删除,那么客户端该文件将显示以上图标

增加图标

含义:当我们编写文档已添加到提交队列,那么系统将自动显示以上图标

无版本控制图标

含义:当我们编写的文件没有添加到上传队列,系统将自动显示以上图标

修改图标

含义:当客户端文件有修改但未提交,此时将自动显示以上图标

只读图标

含义:当客户端文件以只读形式存在时,将自动显示以上图标

锁定图标

含义:当服务端数据已锁定,那么客户端文件将自动显示以上图标

忽略图标

含义:客户端文件已忽略,不需要进行提交上传,那么将自动显示以上图标

TortoiseSVN使用详解

(Checkout)检出操作

  • 链接到SVN服务器端

  • 拉取服务端数据到本地

注意:Checkout只在第一次链接时操作一次,以后如果进行更新操作请使用Update(更新指令)

(Commit)提交操作

将本地修改的代码提交到远程

(Update更新操作)

将远程修改的代码更新到本地

忽略功能

有些文件不希望上传至svn服务器,应该将该文件或该类型的文件添加至忽略列表

  1. 忽略某个指定的文件

  2. 忽略某类型文件

版本回退

有些时候,软件的运行可能使开发者或使用者不满意,这时我们需要把当前版本退回到以前的某个版本。

  1. 在项目空白处鼠标右键,采用如下图所示操作

  2. 根据日志或者版本号进行版本回退

  3. 根据日志信息选择要回退的状态,点击确定即可

版本冲突

在实际项目开发中,如果两个人同时修改某个文件就会产生版本冲突问题。

点击commit的时候发现如下错误,有冲突,禁止提交

解决方案

  1. update远程代码到本地
  • index.php :整合后的index.php冲突文件
  • index.php.mine :本地修改后的index.php文件
  • index.php.r6 :index.php的起始文件(最初的)
  • index.php.r7 :另外一位同事修改后的index.php文件
  1. 删除其他index.php文件,只保留整合后的index.php
  • 打开index.php文件,手动将冲突解决
  • 解决之后重新commit即可

svn 的常用命令

检出 checkout | co

从服务器拉取代码到本地

格式:svn co [svn 服务器 url] [检出本地的 path]

bash 复制代码
svn co svn://47.106.183.193/helloworld ./
# svn在检出的时候可以指定用户名和密码
svn co svn://47.106.183.193/helloworld --username=xxx --password=yyy ./

添加 add

将新增加的文件加入版本控制体系

bash 复制代码
svn add 文件名

提交 commit | ci

将本地变更的代码提交到 svn 服务器

格式:svn commit -m "xxx" [文件名]

bash 复制代码
svn ci -m "第一次提交" hello.txt

提交完之后,会发现版本号自动增加了

更新 update | up

把服务器端文件所产生的所有修改下载到本地

bash 复制代码
svn up

查看

bash 复制代码
# 查看版本信息
svn log
# 查看文件状态
svn status
# 查看差异
svn diff

版本回退

  1. 还未提交

    当我们想放弃对文件的修改,可以使用 svn revert 命令,将撤销任何文件或目录里的局部更改,revert 操作不单单可以使单个文件恢复原状, 而且可以使整个目录恢复原状。恢复目录需要携带 -R 参数

bash 复制代码
svn revert 文件名
svn revert -R 目录名
  1. 已经提交

    对于已经提交的修改,我们需要使用 merge 命令进行回退,同时需要携带 -r 参数

bash 复制代码
svn merge -r 最新版本号:目标版本号 目录名或文件名
## 如:从版本100 回退到版本99
svn merge -r 100:99 目录名或文件名

冲突解决

当多人开发同一个文件时,我们进行commit或者update的时候,可能会发生冲突

发生冲突时,我们本地除了原文件会多出三个文件,总共四个文件

  • xxx 文件:整合后的冲突文件
  • xxx.mine 文件 :发生冲突时本地文件内容
  • xxx.r[小版本号]文件 :发生冲突前文件内容
  • xxx.r[大版本号]文件 :发生冲突时服务器端文件内容

我们只需要关注 xxx文件,因为它本身就是整合后的冲突文件,只需要将该文件内的冲突解决完即可,其他三个文件可以删除掉。

xxx 文件内容冲突解决之后,执行svn ci提交即可。

相关推荐
陈卓4105 分钟前
Redis-限流方案
前端·redis·bootstrap
顾林海13 分钟前
Flutter Dart 运算符全面解析
android·前端
七月丶20 分钟前
🚀 现代 Web 开发:如何优雅地管理前端版本信息?
前端
漫步云端的码农22 分钟前
Three.js场景渲染优化
前端·性能优化·three.js
悬炫22 分钟前
赋能大模型:ant-design系列组件的文档知识库搭建
前端·ai 编程
用户1083863868026 分钟前
95%开发者不知道的调试黑科技:Apipost让WebSocket开发效率翻倍的秘密
前端·后端
稀土君1 小时前
👏 用idea传递无限可能!AI FOR CODE挑战赛「创意赛道」作品提交指南
前端·人工智能·trae
OpenTiny社区1 小时前
Node.js 技术原理分析系列 4—— 使用 Chrome DevTools 分析 Node.js 性能问题
前端·开源·node.js·opentiny
写不出代码真君1 小时前
Proxy和defineProperty
前端·javascript
乐坏小陈1 小时前
TypeScript 和 JavaScript:2025 年应该选择哪一个?【转载】
前端·javascript