搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
寸_铁
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
python算法论文毕设题目思路_本科算法类毕设
2
Rust开发工具有哪些?_rust 开发工具
3
android 判断是否是debug包还是release包_判断安装包是否是realse的
4
OpenCV是什么?它的作用是什么?_opencv是干什么的
5
linux,docker,k8s常见命令
6
kafka+logstash+elasticsearch+kibana实现数据发送和监控_kibana监控kafka
7
设计分享 | STM32F103RCT6实现DMA数据转运_stm32f103 rtt dma
8
怎样才是好产品?
9
Windows下两种方法弹出U盘_windows弹出u盘命令
10
android studio安装方法_android studio最新版安装
当前位置:
article
> 正文
SVN基本操作使用
作者:寸_铁 | 2024-07-18 18:06:04
赞
踩
svn
SVN
简介:
Subversion(SVN)是一种开源版本控制系统,由Apache Software Foundation维护和开发。它用于管理文件和目录的更改,并跟踪这些更改的历史记录,常用于软件开发和其他需要版本控制的项目。
主要特点:
集中式版本控制:SVN采用集中式版本控制模型,所有版本历史记录存储在中央服务器上,客户端从服务器获取和提交更改。
版本跟踪:每次提交操作都会生成一个唯一的版本号,所有文件和目录的变化都会被记录,方便后续回溯和恢复。
分支和标签:SVN支持创建分支(branch)和标签(tag),便于管理不同的开发线路和标记重要的版本。
目录版本化:不仅文件可以版本化,目录也可以版本化,这意味着目录的添加、删除和重命名等操作也会被记录。
二进制文件支持:SVN能够有效管理二进制文件和文本文件,并提供差异存储和传输,减少网络传输量和存储空间。
基本工作流程:
检出(Checkout):用户从服务器获取代码副本到本地工作目录。
编辑(Edit):在本地工作目录中编辑文件。
更新(Update):从服务器获取最新的代码更新到本地工作目录,确保代码同步。
提交(Commit):将本地工作目录中的更改提交到服务器,生成新版本。
优势和劣势
优势:
易于设置和使用,尤其适合小型到中型团队。
丰富的功能,包括原子提交、标签和分支管理。
广泛的社区支持和文档资源。
劣势:
集中式模型可能会在大规模团队协作中成为瓶颈。
相比于分布式版本控制系统(如Git),在处理分支和合并时可能较为繁琐。
01-SVN概述
1、为什么需要SVN版本控制软件
2、解决之道
SCM:软件配置管理
所谓的软件配置管理实际就是对软件源代码进行控制与管理
CVS
:元老级产品
VSS:入门级产品
ClearCase
:IBM公司提供技术支持,中坚级产品
SVN:主流产品
3、什么是SVN
SVN
全称
SubVersion
SVN
是近年来崛起的版本管理工具,是
CVS
的接班人。目前,绝大多数软件公司都使用
SVN
作为代码版本管理软件。
特点:
操作简单
,
入门简单
,
支持跨平台
(
Window/Linux/MacOS),
支持版本回退功能(时间机器)
4、获取SVN软件
属于
C/S
结构软件(客户端与服务器端)
服务端软件:VisualSVN
网址:
VisualSVN - Subversion-based version control for Windows
客户端软件:TortoiseSVN
网址:
http://tortoisesvn.net/downloads
02-SVN服务端软件安装
1、
SVN
工作流程
2、服务器端软件安装(VisualSVN)
服务端软件存储于软件/服务器端
1)双击服务端软件安装
2)下一步,继续
3)下一步,继续
4)下一步,继续
5)下一步,继续,安全完成。
03-SVN服务端配置
1
、创建一个项目
①
首先在SVN服务器端创建一个公有目录WebApp做为项目目录
②
在
WebApp
目录下创建Shop文件夹,做为Shop(版本仓库)
③
创建版本仓库,基本语法:
svnadmin
create Shop 文件夹路径(Shop仓库)
如果
Shop
仓库配置成功,那么Shop文件夹会显示以下目录结构
2、进行服务端监管
Apache
à
http://localhost
或(
ip
地址)访问到htdocs目录下的相关文件(监管)
SVN
à
svn://localhost
或(ip地址)访问到相关数据仓库(如Shop仓库)
基本语法:
svnserve
-d(后台运行)
-r
(监管目录)
版本仓库目录
如下图所示:
通过以上指令,我们的
svn://localhost
或
ip
地址就可以直接指向Shop版本仓库
3、权限控制
默认情况下,SVN服务器是不允许匿名用户上传文件到服务器端的,所以必须更改系统相关配置文件。
更改第19行代码,去除前面的空格以及#号,更改其值为write(可读写)
04-SVN客户端软件安装与使用
1
、获取软件安装包
2、确认操作系统位数
32位操作系统
64
位操作系统
如何确认操作系统位数呢?可以在计算机图标上鼠标右键
à
属性,如下图所示:
通过以上分析可知,我们需要安装64位客户端软件。
3
、客户端软件安装步骤
①
双击软件运行(TortoiseSVN)
②
同意许可协议,下一步:
③
选择默认安装即可,下一步:
④
下一步,Install,系统将会自动安装SVN软件,单击Finish即可。
注:在Tortoise
SVN
客户端软件安装完毕后,请一定要重启计算机,否则SVN图标是无法显示的。
如果我们鼠标右键出现如下两个图标,代表我们已经安装成功!
⑤
安装汉化包(
汉化包在官网可以直接下载,注意汉化包对应svn版本下载
)
双击运行安装语言包,系统将会自动寻找之前Tortoise
SVN
软件安装目录,并进行自动安装,安装完成后可以进行如下设置:
⑥
使用客户端软件连接SVN服务器
(
Checkout
检出)
首先在你的项目目录鼠标右键
à
TortoiseSVN
à
版本库浏览器
à
输出
SVN
服务器地址:
svn://
SVN服务器地址
à
Shop
项目(仓库)
显示隐藏文件
如果出现以上.svn隐藏文件夹,代表检出成功。
05-SVN使用详解(一)
1、回顾SVN三大指令
1
)(Checkout)检出操作:
①
链接到SVN服务器端
②
更新服务端数据到本地
注意:Checkout只在第一次链接时操作一次,以后如果进行更新操作请使用Update(更新指令)
2)(Commit)提交操作:
①
提交本地数据到服务器端
以上工作大部分是由项目经理完成的,那么如果公司新来一个程序员(李四),他需要做哪些操作呢?
3)检出操作,效果如下:
4)Commit(提交),效果如下:
以上指令通常是在模块开发完毕后上传
5)项目经理(Update更新操作)
05-SVN使用详解(二)
1
、图标集
1)常规图标
含义:当客户端文件与服务器端文件完全同步时,系统会显示以上图标
2)冲突图标
含义:当客户端提交的文件与服务器端数据有冲突,系统会显示以上图标
3)删除图标
含义:当服务端数据已删除,那么客户端该文件将显示以上图标
4
)增加图标
含义:当我们编写文档已添加到提交队列,那么系统将自动显示以上图标
5)无版本控制图标
含义:当我们编写的文件没有添加到上传队列,系统将自动显示以上图标
6)修改图标
含义:当客户端文件有修改但未提交,此时将自动显示以上图标
7)只读图标
含义:当客户端文件以只读形式存在时,将自动显示以上图标
8)锁定图标
含义:当服务端数据已锁定,那么客户端文件将自动显示以上图标
9)忽略图标
含义:客户端文件已忽略,不需要进行提交上传,那么将自动显示以上图标
2、忽略功能
有些文件不希望上传至svn服务器,应该将该文件或该类型的文件添加至忽略列表
1)忽略某个指定的文件
2)忽略某类型文件
05-SVN使用详解(三)
1
、什么是版本回退
有些时候,软件的运行可能使开发者或使用者不满意,这时我们需要把当前版本退回到以前的某个版本。
2、版本回退功能
①
在项目空白处鼠标右键,采用如下图所示操作
根据日志进行版本回退
根据日志信息选择要回退的状态,效果如下图所示
回退效果如下:
05-SVN使用详解(四)
1
、什么是版本冲突
在实际项目开发中,如果两个人同时修改某个文件就会产生版本冲突问题。
2
、模拟版本冲突
模拟以上过程,出现如下错误提示:
3、解决之道
1)合理分配项目开发时间
旺财 上午开发
小强 下午开发
2
)合理分配项目开发模块
旺财 购物车模块
小强 文章模块
3)通过SVN解决版本冲突问题
①
更新服务器端数据到本地
index.php :整合后的index.php文件
index
.php.min
e
:小强修改后的index.php文件
index.php.r6 :09:00更新时的index.php(起始状态)
index.php.r7 :旺财修改后的index.php文件
②
删除除index.php以外的其他三个文件
③
修改整合index.php冲突文件
④
重新提交数据到SVN服务器端,即可解决版本冲突问题
4
、
SVN如何切换账号
①鼠标右击选择TortoiseSVN--->Settings
②找到Saved Data选项
③然后选择下图红框里面的选项,单击clear
④弹出账号信息,勾选想要清除的账号点击ok即可清除
05-SVN使用详解(五)
1.svn提交过滤
2.找到如下位置,然后再加上自己想过滤的文件比如:*.iml target
注意:要用一个空格隔开,不用带 '/' 想过滤哪个目录,直接目录名即可。
06-配置多仓库与权限控制
1
、配置多仓库
在实际项目开发中,我们可能会同时开发多个项目,那么我们如何进行多项目监管呢?
通过
svnserve
进行仓库监管,但是监管指令只能监管某一个文件夹,而不能同时监管多个仓库。
答:可以通过监管WebApp总目录来达到监管所有仓库的目的
svnserve
-d
(
后台运行) -r(监管目录)
WebApp
(项目总目录)
①
打开
DOS
窗口,输入如下指令
svn
://
localhost
或
ip
地址来访问D:/svn/WebApp目录
如果需要访问Shop项目、Wechat项目
Shop
项目:svn://localhost/Shop
Wechat
项目:svn://localhost/Wechat
2
、权限控制
如果要使用权限控制有一个前提:必须首先开启权限功能
在每一个仓库中都有一个conf文件夹,里面有三个文件
authz文件:授权文件
告诉哪些用户具有哪些权限
passwd文件:认证文件
标识当前svn系统中某个仓库具有哪些用户以及相应的密码
默认情况下,以上两个文件都是禁用的,如需要使用,首先要开启以上两个文件
svnserve.conf
配置文件
开启步骤如下:
①
注释匿名用户的可读写权限,修改文件
svnserve.conf
②
开启认证文件与授权文件,修改文件
svnserve.conf
③
编写认证文件定义相关用户名与密码,修改
passwd文件
④
编写授权文件,修改
authz文件
⑤
测试
输入
admin
,admin888超级管理员
07-SVN服务的配置与管理
1、配置自启动服务
sc create SVNService
binpath= “D:\subversion\bin\svnserve.exe --service -r D:/svnroot” start= auto
sc
create 服务名称
binpath=
空格
”svnserve.exe –service –r
D:/
svn
/WebApp
” start=
空格auto
创建系统服务,服务名SVNService
①
打开运行,输入cmd指令,打开DOS环境(请使用超级管理员运行)
②
输入一下指令
③
查看系统服务
控制面板
à
管理工具
à
服务
双击运行,启动SVNService服务
如果运行成功代表开启SVN监管服务。
2、创建批处理文件
启动服务
net
start 服务名称
停止服务 net stop
服务名称
删除服务 sc delete 服务名称
以上功能在实际项目开发中经常使用,所以可以封装为.bat批处理文件,效果如下:
08-模拟真实的开发环境
1
、
SVN
工作流程
2、钩子程序
所谓钩子就是与一些版本库事件触发的程序,例如新修订版本的创建,或是未版本化属性的修改。
默认情况下,钩子的子目录
(
版本仓库
/hooks/)
中包含各种版本库钩子模板。
post-commit.tmpl :事务完成后所触发的钩子程序
钩子程序默认情况可以采用批处理指令或Shell指令来进行编写
3
、通过批处理指令编写钩子程序
①
指令
svn
服务端工作目录
设置服务器端
SVN
路径
SET SVN="D:\svn\bin\svn.exe“
②
指定
Web
服务器工作目录
设置服务器端项目运行目录
SET DIR="D:\server\apache\htdocs\shop"
③
通过
update
指令实时更新数据到DIR目录中
SVN update %DIR%
④、具体使用步骤
第一步:复制post-commit.tmpl为post-commit.bat文件
第二步:填入相关批处理指令
第三步:在apache目录创建Shop项目并更新SVN服务端数据到本地
第四步:更新文件到SVN服务器端,可以在Shop目录实时获取到最新数据
第五步:可以通过虚拟主机形式直接访问更新文件
09-SVN扩展程序
1、什么是BAE云引擎
百度应用引擎(
BAE
)是百度推出的网络应用开发平台。基于
BAE
架构,使开发者不需要维护任何服务器,只需要简单的上传应用程序,就可以为用户提供服务。
开发者可以基于
BAE
平台进行
PHP
、
Java
、
Python
、
Nodejs
应用的开发、编译、发布、调试。
2
、如何使用BAE云引擎
BAE
地址:
百度智能云-云智一体深入产业
进入部署列表(BAE管理平台)
1)添加部署
创建成功,如下图所示
单击管理控制台,如下图所示
2)
SVN
管理
通过
SVN
进行检出操作(之后可以向SVN服务器中添加或下载相关数据)
3
)提交服务(Commit)
当我们的BAE服务器有数据的更新时,系统会自动弹出以下提示:
单击快捷发布
10-SVN客户端开启分支
1.首先关联仓库,
右键 --- 点击 ' SVN Checkout...'
2.在项目上点击右键,在TortoiseSVN菜单中选择
Branch/Tag
;
3.在To path输入框中输入新建分支的路径,一般是:/branches/分支名,也就是相当于分支保存的路径名;
4.在下面选择
HEAD revision in the repository
,为当前SVN中trunk目录下最新的代码建立分支,如果需要为制定的revision建立分支,可以进行选择;
5.点击OK分支建立完成
6.打开branches目录,发现目录依然为空,没有刚才建立的分支,这是因为分支建立的操作是在服务器端完成的,当需要编辑分支时,在branches目录点击
Update
,刚才建立的分支就会下载下来。
注:分支创建成功后,远程仓库可以查看到分支目录,本地仓库(branches)中不生成新的目录,需要 Update 下来
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/寸_铁/article/detail/846989
推荐阅读
article
C#
进程
间
通讯
技术-整理
。
_
c#
程序
间
通讯
...
扩展阅读:http://www.cnblogs.com/joye-shen/archive/2012/06/16/255...
赞
踩
article
基于时域有限
差分法
的
FDTD
的计算电磁学算法-YEE网格下的更新公式推导_
the
finite
-di...
参考书籍:The
finite
-
difference
time
-
domain
method for electromag...
赞
踩
article
RUST
——
线程
创建_
rust
spwan
是
线程
嘛...
个人
rust
学习笔记_
rust
spwan
是
线程
嘛
rust
spwan
是
线程
嘛 用s...
赞
踩
article
【
项目管理
】
git
分支
与
主干
合并
操作_
git
合并
代码
到主
分支
...
本文详细介绍了如何在Git中进行
主干
与
分支
的
合并
操作,包括从
主干
合并
到
分支
、
分支
合并
主干
以及处理冲突和推送
代码
到远程仓库...
赞
踩
article
Github
断点续传
(
git
clone
经常失败)_
git
clone
断点续传
...
【代码】
Github
断点续传
(
git
clone
经常失败)_
git
clone
断点续传
git
clone
断点续传
...
赞
踩
article
二叉
树
的
层序
遍历
以及
队列
的
实现
_
树
的
层次
遍历
怎么通过根传入
队列
...
文章介绍了
二叉
树
的
层序
遍历
和
队列
的
实现
。
层序
遍历
是逐层
遍历
节点,
队列
在
实现
层序
遍历
中起到关键作用。文章讲解了
层序
遍历
的
过...
赞
踩
article
Hive
数据仓库
介绍_
hive
数据库
...
hive
是基于Hadoop的一个
数据仓库
工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoo...
赞
踩
article
C++
链表
概念及
基本操作
...
以上内容分析了
链表
的组成,相较于数组
链表
具有的优缺点,同时给出了
链表
常用的几种函数。_c++
链表
c++
链表
...
赞
踩
article
利用
IPC
通道
进行进程
间通信
(
C#)...
有一个解决方案,其中包括一个Windows服务和一个Windows应用程序,两者之间需要进行通信。查了下,可以使用多...
赞
踩
article
强化
学习
与
监督
学习
的
区别
在哪里?...
强化
学习
与
监督
学习
的
区别
在哪里?
强化
学习
与
监督
学习
的
区别
在哪里? ...
赞
踩
article
基于
FPGA
的
中值
滤波
器设计_
fpga
实现
中值
滤波
...
文章目录简介统计排序
滤波
基于
FPGA
的统计排序
滤波
器并行全比较排序法整体设计与模块划分median_1d 模块设计med...
赞
踩
article
进程
间通信
之命名
管道
.
net
示例...
众所周知,命名
管道
是
进程
间通信
常用的一种方法,他可以在同一台计算机的不同
进程
之间,或在跨越一个网络的不同计算机的不同
进程
...
赞
踩
article
gitee
设置
宝塔
webhook
自动
拉取
代码
& .
lock
文件存在无法
拉取
_
宝塔
如何从
gitee
上拉...
2.
宝塔
新增
webhook
,
拉取
就是下图3句
代码
,再把密钥放到
gitee
的
webhook
就可以了。1.在
宝塔
项目文件gi...
赞
踩
article
华为
笔试
4.24
第二
题
:这一
题
只
通过了36%why_
华为
4.24
笔试
题
...
小米# #小米求职进展汇总#rt,投的日常实习,自动驾驶方向,因为暑期实习没有想去的岗位。
只
有一面,本人是自动化专业,简...
赞
踩
article
C#
数值反转_
start
experimental
instance
of
visual
studi...
C#
数值反转打开Start Experimental Instance of Visual Studio 2019创建一...
赞
踩
article
探索
亚马逊
Bedrock
:
构建
云
原生
应用
的
新范式...
探索
亚马逊
Bedrock
:
构建
云
原生
应用
的
新范式项目地址:https://gitcode.com/aws-samples...
赞
踩
article
shiro1.2.
4
升级报错
org
/
owasp
/
encoder
/
Encode
或者是
org
.owas...
ApacheShiro反序列化远程代码执行 漏洞处理Shiro对rememberMe的cookie做了加密处理,shir...
赞
踩
article
Windows
下的
Git
,“
git
不是
内部或
外部命令
,也
不是
可运行的程序 ”
解决方案
_
win10
...
打开电脑-属性-高级系统设置-环境变量,在Path里面添加
Git
安装路径下的
git
-core和bin。就可以打开CMD,...
赞
踩
article
Java
中
抽象
类
与
接口
区别_
java
抽像
类
与
接口
...
抽象
类
:
抽象
类
是无法实例化的特殊
类
。所以问题是为什么我们需要一个不能被实例化的
类
,
抽象
类
只能是子
类
(继承自)。换句话说,...
赞
踩
article
Springboot整合
Kafka
-控制或
关闭
消费
、动态
开启
或
关闭
监听_
springboot
kaf...
写在前面:各位看到此博客的小伙伴,如有不对的地方请及时通过私信我或者评论此博客的方式指出,以免误人子弟。多谢! 默认情况...
赞
踩
相关标签
算法
matlab
开发语言
rust
git
github
数据结构
C
数据仓库
hive
hadoop
c++
链表
c#
server
string
windows
constructor
class
.net
object
button
timer
byte