ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SVN 学习笔记

2022-04-30 19:00:45  阅读:165  来源: 互联网

标签:SVN 文件 index 笔记 学习 php 服务端 客户端


概述

SVN 全称 SubVersion,是一个开放源代码的版本控制系统,它的特点是操作简单,支持跨平台操作,支持版本回退

SVN 属于 C/S 结构软件,分客户端和服务端:

  • 服务端软件:VisualSVN
  • 客户端软件:TortoiseSVN

SVN 的工作原理如下,SVN 服务器会把代码整合记录每一次的改动历史,开发人员通过以下基本命令便能与 SVN 服务器完成交互:

  • Checkout(检出):当你手上没有源代码的时候,你需要从 SVN 服务器 checkout 一份
  • Update (更新):当你已经 checkout 一份源代码, Update 可以让你的本地源代码和 SVN 服务器的源代码同步
  • Commit(提交):当你已经修改了代码,就需要 Commit 到 SVN 服务器


SVN 服务端安装与配置

服务器端软件存储与服务端,下载地址:https://www.visualsvn.com/downloads/

一直点击下一步,在选择组件界面时,建议按照如图:

选择安装位置和数据仓库

SVN 服务端配置:

  1. 创建一个项目
    1. 首先在 SVN 服务端目录创建一个公有目录 WebApp 作为项目目录
    2. 在 WebApp 目录下创建项目文件夹,比如 Shop 文件夹,作为项目的版本仓库
    3. 创建版本仓库,基本语法:svnadmin create [文件夹目录]
  2. 进行服务器端监管
    1. 通过指令:svnserve -d -r [监管文件夹目录] 监管项目
    2. 通过 SVN://localhost或者 IP 地址就可以直接指向 Shop 版本仓库
  3. 权限控制
    1. SVN 服务器默认不允许匿名用户上传文件到服务端
    2. 在项目文件夹找到 conf/svnserve.conf 修改配置为:anon-access:write

SVN 客户端安装与配置

SVN 客户端下载地址:https://tortoisesvn.net/downloads.html

一直点击下一步即可,安装完成以后,使用客户端连接 SVN 服务器,在本地项目目录右键,选择 TortoiseSVN - 版本库浏览器,输入 SVN 服务器地址,如 svn://localhost,由于设置了 SVN 服务器监管 Shop 项目,所以会自动指向 Shop 项目

单击检出,就会自动检出数据到客户端,如果客户端项目目录出现了 .svn 隐藏目录就代表成功了

开发人员通过更新拉取代码,在本地进行开发,在项目目录右键 SVN 提交即可提交代码到服务端,和· Git 没有太大差别


SVN 使用详解

1. 图标集

常规:客户端文件与服务端文件完成同步

冲突:客户端提交文件与服务端文件有冲突

已删除:服务端文件已删除

增加:客户端文件已添加到提交队列

无版本控制:客户端文件没有添加到提交队列

修改:客户端文件有修改但未提交

只读:客户端文件为只读形式

锁定:服务端文件已锁定

忽略:客户端文件不需要提交上传

2. 版本冲突

在实际项目开发中,如果两个人同时修改某个文件就会产生版本冲突。当发生冲突时,更新服务器数据到本地,假设冲突文件为 index.php,则会产出以下文件:

  • index.php:系统自动整合后的 index.php 文件
  • index.php.mine:后提交者修改后的 index.php 文件
  • index.php.r6:index.php 后的 r6 代表版本号,不同的项目也不同,这里表示 index.php 的起始状态
  • index.php.r7:前提交者修改后的 index.pho 文件

要解决版本冲突,只需要删除除 index.pho 以外的文件,修改 index.php 文件的内容,解决冲突再提交即可

3. 配置多仓库

在 SVN 中一个项目就称为一个仓库,实际开发中,我们可能同时开发多个项目,这时需要进行多项目监管,可以通过监管 WebApp 总目录来达到监管所有仓库的目的

svnserve -d -r [WebApp目录]

如果要访问对应的项目,URL 也有变化:svn://localhost/Shop

4. 权限控制

首先要开启权限功能,每一个仓库中都有 conf 文件夹,里面有两个文件:

  • authz:授权文件,标识哪些用户具有哪些权限
  • passwd:认证文件,标识某个仓库具有哪些用户以及相应密码

默认情况下,以上两个文件都是禁用的,如需要使用,要在对应项目的 svnserve.conf 配置如下:

# 注释匿名用户的可读写权限
# anno-access=write
# 开启授权与认证文件
password-db=passwd
authz-db=authz

修改 passwd 文件,定义相关用户和密码

admin=admin888

修改 authz,设置分组

# 组名=用户列表,用户列表以逗号分隔
admin=admin
[Shop:/]
# 拥有可读可写权限
@admin=rw
# 匿名用户只有可读权限
*=r

5. 钩子程序

所谓钩子就是版本库事件触发的程序,例如新修订版本的创建,或者未版本化属性的修改,在版本仓库的 hooks 目录下包含各种版本库钩子模板,常用的钩子程序有 post-commit.tmpl:提交完成后所触发的钩子程序

复制一份 post-commit.tmpl,删除里面的内容,重命名为 post-commit.bat,通过批处理指令编写钩子程序:

# 设置服务端svn路径
SET SVN="D:\svn\bin\svn.exe"
# 设置web服务器工作目录
SET DIR="D:\server\apache\shop"
# 通过update指令实时更新数据到DIR目录
SVN update %DIR%

标签:SVN,文件,index,笔记,学习,php,服务端,客户端
来源: https://www.cnblogs.com/Yee-Q/p/16210947.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有