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

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

什么是 SVN

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

特点

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

获取 SVN 软件

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

服务端软件:VisualSVN

客户端软件:TortoiseSVN

win64

win64 中文包

win32

win32 中文包

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

服务端配置

一、创建版本仓库

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

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

创建版本仓库,基本语法: 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(可读写)

账号权限控制

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

开启 authz文件和passwd文件

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

编写authz授权文件

设置 groups 组

给 groups 设置权限

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

r:可读w:可写*:其他所有用户

配置成功后重新拉取或提交文件需要用户登录

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

1. Checkout 检出

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

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

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

TortoiseSVN图标集

常规图标

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

冲突图标

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

删除图标

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

增加图标

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

无版本控制图标

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

修改图标

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

只读图标

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

锁定图标

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

忽略图标

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

TortoiseSVN使用详解

(Checkout)检出操作

链接到SVN服务器端

拉取服务端数据到本地

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

(Commit)提交操作

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

(Update更新操作)

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

忽略功能

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

忽略某个指定的文件

忽略某类型文件

版本回退

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

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

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

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

版本冲突

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

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

解决方案

update远程代码到本地

index.php :整合后的index.php冲突文件index.php.mine :本地修改后的index.php文件index.php.r6 :index.php的起始文件(最初的)index.php.r7 :另外一位同事修改后的index.php文件

删除其他index.php文件,只保留整合后的index.php

打开index.php文件,手动将冲突解决解决之后重新commit即可

svn 的常用命令

检出 checkout | co

从服务器拉取代码到本地

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

svn co svn://47.106.183.193/helloworld ./

# svn在检出的时候可以指定用户名和密码

svn co svn://47.106.183.193/helloworld --username=xxx --password=yyy ./

添加 add

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

svn add 文件名

提交 commit | ci

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

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

svn ci -m "第一次提交" hello.txt

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

更新 update | up

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

svn up

查看

# 查看版本信息

svn log

# 查看文件状态

svn status

# 查看差异

svn diff

版本回退

还未提交

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

svn revert 文件名

svn revert -R 目录名

已经提交

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

svn merge -r 最新版本号:目标版本号 目录名或文件名

## 如:从版本100 回退到版本99

svn merge -r 100:99 目录名或文件名

冲突解决

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

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

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

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

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

相关阅读

绵羊吃什么食物
日博365网

绵羊吃什么食物

📅 11-03 👁️ 7248
【飓风突击】《荒野行动》版本更新常见问题解答及意见反馈
365bet网站是多少

【飓风突击】《荒野行动》版本更新常见问题解答及意见反馈

📅 07-01 👁️ 9228
阴阳师姑获鸟暴击堆到多少 姑获鸟暴击值推荐
365bet在线娱

阴阳师姑获鸟暴击堆到多少 姑获鸟暴击值推荐

📅 09-14 👁️ 9324