百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

SVN学习笔记 svn入门

yuyutoo 2024-11-02 15:22 6 浏览 0 评论

一. SVN

1.什么是SVN

SVN: subversion 子级版本 (子级源代码版本控制管理软件)

svn:全称Subversion,是代码版本管理软件,管理着随时间改变的数据。这些数据放置在一个中央资料档案库 (repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。 许多人会把版本控制系統想像成某种 "时光机器"。

使用svn可以很好地协调一个团队共同开发同一个项目,而不会出现代码冲突、覆盖的情况。

SHAPE \* MERGEFORMAT

上图是多人共同开发同一个项目,内部最大的问题是,在比较短的时间内如果有多人同时开发同一个文件,会造成彼此代码覆盖的情况发生。A的代码在最后会把B的代码给覆盖掉,10点以后就只体现A程序员的功能效果。

SVN其中的作用一个就是避免上述情况发生。

2. 使用svn的作用

① 多人开发同一个项目不会出现代码覆盖情况。

② 针对一个文件可以创建许多不同版本,并且可以随时查看不同版本的内容。

③ 公司领导可以通过svn查看每个人的工作情况

二. SVN的安装

1. 服务器端安装

2. 客户端安装

3. 创建多个svn仓库(存储代码)

> svnadmin create h:/svnServer/app/shop

4. 启动仓库服务

> svnserve -d(独立端口运行) -r(仓库地址) 仓库地址

> svnserve -d -r h:/svnServer/app/shop //启动shop仓库服务

该svn服务走svn协议,端口号码是3690

5. 使得本地客户端(码农)与仓库取得联系

> 右键------> checkout

三. 使用svn服务

1. 给svn仓库提交第一个程序文件

步骤:

① 右键------> SVN---->Add

(本地的.svn对该文件形成管理)

② 右键------> Commit

(本次的文件提交给svn仓库)

1.1 文件颜色标志

① 蓝色加号:本地的.svn对该文件有形成管理

② 绿色对号:本地文件、.svn管理的版本文件、仓库文件 三者一致

③ 红色叹号:本地文件 与 .svn和仓库文件 不一致(用户自己修改了该文件)

④ 黄色叹号:表示该文件正处于冲突状态

2. 多个程序员给仓库提交文件

SHAPE \* MERGEFORMAT

3. 同时运行多个svn仓库服务

把所有仓库的上级目录当成服务给启动起来。

· svnserve -d -r d:/svnServer/app/

主机名:svn://localhost ---------------->app目录

svn://localhost/student---------->与student仓库取得联系

svn://localhost/book------------->与book仓库取得联系

svn://localhost/shop-------------->与shop仓库取得联系

3.1 旧用户更换svn主机名

删除.svn文件,断开与仓库的联系

重新checkout通过svn新主机名建立与仓库的联系

4. 同一个文件的不同版本切换

一个程序文件可以在svn仓库里边形成许多不同版本,并可以随时查看。

总结:

1. 安装svn的服务器、客户端软件

2. 创建仓库(根据不同的项目创建对应的仓库)

> svnadmin create 仓库地址

3. 使用svn( checkout update commit )

4. 启动svn仓库服务

> svnserve -d -r 仓库地址

四.冲突解决(重点)

上图两个程序员在短时间之内共同开发同一个程序文件(goods.php)

10点以后系统只会体现linken开发的功能(mary开发的功能被linken给覆盖了)

文件覆盖的解决:

① 给每个文件分配一个"令牌",谁拿到令牌谁就有权利开发该文件

(同一个程序文件同一个时间点只允许有一个人开发)

② 给每个文件设置一个版本号码,提交的时候如果服务器的版本等于本地版本号码就允许提交,否则不允许提交(本地号码 小于 服务器版本)

冲突:

广义角度的冲突,提交程序文件 本地版本号码 小于 服务器版本号码

狭义角度的冲突,多个程序员对同一个文件同一处代码的修改再共同提交文件的时候回产生冲突。

1. 冲突具体形式:

1.1大家修改的代码不在同一处

解决:

执行update操作,把仓库最新的文件更新到本地,并和本地文件做Merge融合操作。

继续提交文件即可。

1.2 大家修改的代码在同一处

无论什么样子的冲突:解决就是通过update把最新的版本更新到本地,文件稍作修改后继续提交。

五. 账号和权限

1. 设置账号

2. 给账号设置权限

2.1 给具体用户设置权限

2.2 给一个组别设置权限

2.3 开启只操作某个目录权限

步骤:

① 管理员先把该目录给创建出来并提交给svn仓库

② 外包团队给该 目录提交文件

③ 管理员删除本身创建的目录,执行update更新操作,即可查看外包团队的工作情况

六.设置开机启动项服务

七. 真实环境使用svn

总结:

1. 冲突解决

类型:大家修改代码在(不在)同一处

解决:统一执行update操作,服务器文件会和本身文件做融合(大家的版本号码统一),文件代码做适当调整继续提交

2. 账号和权限设置

(把匿名账号设置为none)

权限设置:

① 具体用户权限设置

② 给组别统一设置权限

③ 给用户设置只操作某个目录的权限

3. 给svn设置服务

> sc create 名称 binpath= "服务执行文件 -r 服务仓库地址 --service" start= auto

>sc delete 名称

作业:

1. 组长搭建svn服务,并给组员设置用户名和密码、权限

2. 组员使用svn服务,进行commit和update操作

相关推荐

.NET 奇葩问题调试经历之3——使用了grpc通讯类库后,内存一直增长......

...

全局和隐式 using 指令详解(全局命令)

1.什么是全局和隐式using?在.NET6及更高版本中,Microsoft引入了...

请停止微服务,做好单体的模块化才是王道:Spring Modulith介绍

1、介绍模块化单体是一种架构风格,代码是根据模块的概念构成的。对于许多组织而言,模块化单体可能是一个很好的选择。它有助于保持一定程度的独立性,这有助于我们在需要的时候轻松过渡到微服务架构。Spri...

ASP.NET程序集引用之痛:版本冲突、依赖地狱等解析与实战

我是一位多年后端经验的工程师,其中前几年用ASP.NET...

.NET AOT 详解(.net 6 aot)

简介AOT(Ahead-Of-TimeCompilation)是一种将代码直接编译为机器码的技术,与传统的...

一款基于Yii2开发的免费商城系统(一款基于yii2开发的免费商城系统是什么)

哈喽,我是老鱼,一名致力于在技术道路上的终身学习者、实践者、分享者!...

asar归档解包(游戏arc文件解包)

要学习Electron逆向,首先要有一个Electron开发的程序的发布的包,这里就以其官方的electron-quick-start作为例子来进行一下逆向的过程。...

在PyCharm 中免费集成Amazon CodeWhisperer

CodeWhisperer是Amazon发布的一款免费的AI编程辅助小工具,可在你的集成开发环境(IDE)中生成实时单行或全函数代码建议,帮助你快速构建软件。简单来说,AmazonCodeWhi...

2014年最优秀JavaScript编辑器大盘点

1.WebstormWebStorm是一种轻量级的、功能强大的IDE,为Node.js复杂的客户端开发和服务器端开发提供完美的解决方案。WebStorm的智能代码编辑器支持JavaScript,...

基于springboot、tio、oauth2.0前端vuede 超轻量级聊天软件分享

项目简介:基于JS的超轻量级聊天软件。前端:vue、iview、electron实现的PC桌面版聊天程序,主要适用于私有云项目内部聊天,企业内部管理通讯等功能,主要通讯协议websocket。支持...

JetBrains Toolbox推出全新产品订阅授权模式

捷克知名软件开发公司JetBrains最为人所熟知的产品是Java编程语言开发撰写时所用的集成开发环境IntelliJIDEA,相信很多开发者都有所了解。而近期自2015年11月2日起,JetBr...

idea最新激活jetbrains-agent.jar包,亲测有效

这里分享一个2019.3.3版本的jetbrains-agent.jar,亲测有效,在网上找了很多都不能使用,终于找到一个可以使用的了,这里分享一下具体激活步骤,此方法适用于Jebrains家所有产品...

CountDownTimer的理解(countdowntomars)

CountDownTimer是android开发常用的计时类,按照注释中的说明使用方法如下:kotlin:object:CountDownTimer(30000,1000){...

反射为什么性能会很慢?(反射时为什么会越来越长)

1.背景前段时间维护一个5、6年前的项目,项目总是在某些功能使用上不尽人意,性能上总是差一些,仔细过了一下代码发现使用了不少封装好的工具类,工具类里面用了好多的反射,反射会影响到执行效率吗?盲猜了一...

btrace 开源!基于 Systrace 高性能 Trace 工具

介绍btrace(又名RheaTrace)是抖音基础技术团队自研的一款高性能AndroidTrace工具,它基于Systrace实现,并针对Systrace不足之处加以改进,核心改进...

取消回复欢迎 发表评论: