美文网首页
版本控制工具入门——SVN

版本控制工具入门——SVN

作者: Ridiculous_one | 来源:发表于2019-07-19 16:44 被阅读0次

本文首发于 LOGI'S BLOG,由作者转载。

SVN 全称 Subversion,是 CVS 的替代品,在当前时间节点,与 Git 共同为软件公司采用,进行项目管理。

软件安装

主流的 SVN 服务端为 VisualSVN Server,客户端为 TortoiseSVN,以下操作都以上述软件为例。

工作流程

项目经理首先将项目初始化到 SVN 服务器 上,开发人员首次获取远程仓库使用 Checkout 命令,之后如服务器发生变更,使用 Update 命令更新代码,本地开发完成后,使用 Commit 命令提交。

                —————Commit—————>| SVN Server
Project Manager <————Checkout————| svn://192.168.1.1
                <————Update——————| Project Shop
                                 |      |--core.php
                <————Checkout————|      |--common.php
   Developer    <————Update——————|
                —————Commit—————>|

服务端配置

初始化版本仓库

  • 安装好 SVN 服务端 后,创建 D://SVN/WebApp 文件夹存放所有项目
  • 进入 WebApp 目录,新建 Shop 目录作为当前项目仓库
  • CMD 窗口 切换到 WebApp,通过 svnadmin create Shop 命令初始化版本仓库

监管仓库目录

启动监管服务后,客户端才能通过 svn://ip 访问到项目仓库。

REM 启动后台监管
REM -d(daemon) -r(repository)
svnserve -d -r D://SVN/WebApp/Shop

如有多个仓库,可监管所有项目的上级目录,此时客户端可通过 svn://ip/repo/name 访问某个仓库。

REM 启动监管
REM -d(daemon) -r(repository)
svnserve -d -r D://SVN/WebApp

使用命令监管需要保持窗口状态,不能关闭,也无法开机自启,为解决以上问题,可将其添加到 Windows Services。具体操作为,在 CMD 中以管理员身份执行以下命令。

REM 创建服务
sc create SVNService binpath="C:\Program Files\Subvision\bin\svnserve.exe --service -r D:\SVN" start=auto

REM 开启服务
net start SVNService

REM 停止服务
net stop SVNService

REM 删除服务
sc delete SVNService

权限控制

默认情况下,SVN 服务端不允许匿名用户上传文件,为了方便调试,可对项目目录下的 conf/svnserve.conf 文件进行更改。

REM 所有用户均可读可写
anon-access = write

但在实际开发中,处于安全考虑,应该建立多个 SVN 账号,并对它们分配不同权限。具体操作为,更改项目目录下的 conf/svnserve.conf 文件,打开认证选项。

REM 禁用匿名用户访问
# anon-access = write

REM 打开认证功能
password-db = passwd
authz-db = authz

随后,更改项目目录下的 conf/passwd 文件,配置用户名和密码。

[users]
    admin = admin
    logi1 = 123456
    logi2 = 123456
    logi3 = 123456
    logi4 = 123456

最后,更改项目目录下的 conf/authz 文件,配置用户分组,和各组权限。

[groups]
    admin = admin
    developer = logi1,logi2,logi3,logi4

# 对每个仓库单独配置
[Shop:/]
    @admin = rw
    @developer = r
    # * 代表剩下的组,或匿名组
    * = r

同步 SVN 和 WEB 服务器

为了实时预览 SVN 服务器上的文件,可将其同步到 WEB 服务器中,方便浏览器访问查看。该需求可通过 SVN 服务器提供的 钩子程序 实现。此处,我们利用项目目录下的 hooks/post-commit.tmpl 钩子,它在 commit 完成后被触发,钩子一般使用 batshell 开发。

新建 hooks/post-commit.cmd 文件,并编写以下内容。

REM Apache HTML 文件目录
SET WEB_SERVER_DIR="D:\server\apache\htdocs\shop"

REM SVN 可执行程序
SET SVN="D:\svn\bin\svn.exe"

REM 更新数据到 Apache 目录
%SVN% update %WEB_SERVER_DIR%

切换到 Apache HTML 目录,进行一次 Checkout 操作,此后,服务端一旦收到 commit,便会触发批处理,随后便可通过浏览器预览提交。

客户端使用

客户端安装完毕后需要重启电脑加载注册表,否则 SVN 状态图标 不会显示。如需汉化,先安装汉化包,随后右键桌面空白处,依次点击 TortoiseSVN -> Settings -> General,选择 Language 下拉框中的 中文(简体) 确定即可。

拉取服务端代码

新建项目目录并进入,空白处右键鼠标,依次进入 TortoiseSVN -> 版本库浏览器,输入 SVN 服务器 svn://192.168.1.1 后点击确定。右键版本库中列出的仓库,选择 检出,点击 确定。此时,打开文件管理器的 显示隐藏文件选项,便可看到初始化的 .svn 文件夹。

Checkout 做了两件事,首先与服务端建立连接,其次拉取最新代码。以后如需更新代码,要使用 Update 指令。

更新服务端代码和本地代码提交

更新代码使用 Update。提交代码用 Commit,需要说明的是 message 要根据公司规定填写,例如 模块——功能——作者

图标含义和忽略文件列表

右键项目目录空白处,依次进入 TortoiseSVN -> 设置 -> 图标覆盖 -> 图标集 可查看所有图标含义。

对于无需上传服务器的文件,可将其添加到忽略列表。具体操作为右键项目需要忽略的文件,依次点击 TortoiseSVN -> 增加到忽略列表,可选择通配符形式,如 *.ppt,如果是目录,选择 以递归方式忽略

版本回退

一般误删文件或新版本有重大问题时,要进行版本回退。右键项目目录空白处,依次进入 TortoiseSVN -> 更新至版本。在 回退对话框 中点击 显示日志,在弹出的 日志对话框 中,选择 对应提交 后确定,之后点击 回退对话框 的确定即可。

解决版本冲突

假设开发人员 A 和 B 同时拉取服务器上的同一文件进行开发,A 先于 B 提交,B 在提交时就会发送版本冲突。

此时,B 应该先 Update,随后手动编辑文件解决冲突,可与 A 商量如何解决,最后 Commit

假设 index.php 发生冲突,在 Update 后会生成 4 个相关文件,分别是:

  • 整合后的文件,index.php
  • B 自己开发的文件,index.php.mine
  • 两人都未开发前的文件:index.php.r6
  • A 先开发完毕提交的文件,index.php.r7

B 只需将 index.php 中的冲突解决,随后删除其他三个文件,提交即可。冲突区域如下所示:

<<<<<<< .mine
    echo 'by B'
=======
    echo 'by A'
>>>>>>> .r7

相关文章

  • 版本控制工具入门——SVN

    本文首发于 LOGI'S BLOG,由作者转载。 SVN 全称 Subversion,是 CVS 的替代品,在当前...

  • SVN使用知识总结

    一. SVN和Git区别 SVN : 集中式的版本控制工具Git : 分布式的版本控制工具 二. SVN介绍 SV...

  • Git&GitHub入门教程

    1. Git简介 Git是和SVN一样的版本控制工具,它和SVN最大的区别是SVN是集中式的版本""控制工具,而G...

  • 源代码管理工具

    1 SVN 集中式版本控制工具: 2 git 开源的分布式版本控制工具,git提交时可以在本地提交 svn和git...

  • Git

    1,Git和SVN都是版本控制工具,那么他们得区别是什么呢? 1 ). Svn 特点SVN是集中式版本控制系统,版...

  • Git 常用指令使用说明

    Git作为一个版本控制工具的后起之秀,目前已经呈现替代SVN的趋势,如果你现在还在使用SVN等版本控制工具,那说明...

  • git快速入门

    git是什么简单说,Git是一个分布式版本控制工具。说起版本控制工具,很多用svn的用户会说,那和svn有什么不同...

  • 版本控制工具svn

    git和svn是现在主流的两种版本控制工具,git的一些语法之前分享过,今天给大家分享一点关于svn的用法;svn...

  • Svn 版本控制工具

    一、软件简介 Svn是一个开放源代码的版本控制系统,通过采用分支系统的高效管理,实现资源的共享和集中式的管理,使用...

  • 【山外笔记-工具框架】SVN版本控制系统

    【山外笔记-框架工具】SVN版本控制系统 学习资料: 1、本文打印版下载地址:[山外笔记-框架工具笔记]SVN版本...

网友评论

      本文标题:版本控制工具入门——SVN

      本文链接:https://www.haomeiwen.com/subject/tzyslctx.html