SVN教程 -- 基于自己学习记录

1. 概述

a. 什么是SVN?

Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统。相较于 git ,svn 是集中式版本控制系统。

SVN官网链接

b. 什么是集中式版本控制系统?

集中式版本控制系统可以这样理解:所有的源代码都放在统一的服务器上,开发者从服务器下载项目组的最新代码,进入自己的分支进行开发工作,提交代码,最后再把自己的分支合并到服务器主分支上,更新服务器源代码。由于源代码最后都是放在服务器上的,服务器统一集中管理,所以我们把这种操作模式叫做集中式管理。

2. 安装

这里以 Ubuntu 14.04.5 LTS 安装 SVN 为例,使用下列命令安装 SVN:

sudo apt-get install subversion

安装完成后输入:

svn –-version

出现下列信息即安装成功。

3. 配置 SVN 服务器

安装好 SVN 后,我们便可以进行相关操作了。

  1. /home/ubuntu/test 下创建一个 svn 文件夹。

    cd /home/ubuntu/test
    mkdir svn
  2. 在 svn 文件夹下创建一个 myCode文件夹仓库。

    svnadmin create /home/ubuntu/test/svn/myCode

    创建完成后的目录结构如图所示:

  1. 创建完成后,我们需要配置一下 SVN。

    在 conf 文件夹下有三个文件:

    authz:用户权限配置文件

    passwd:用户密码配置文件

    svnserve.conf:对 svn 访问用户的配置文件。

    a. 打开 svnserve.conf:

    vim svnserve.conf

    修改其中的内容如下(将注释 # 去掉):

    anon-access = read
    auth-access = write
    password-db = passed
    authz-db = authz

    b. 修改 authz ,在最末行加入:

    [/]
    user = r
    user = rw

    多用户时可以设置用户组:

    在 [groups] 下面添加用户组名和用户名

    [groups]
    mygroup = admin, user, xxx
    readGroup = xxx

    设置用户组读写权限:

    [/]
    @mygroup = rw
    @readGroup = r

    设置用户组权限需要加@,单个用户的时候不用加。

    c. 设置密码,打开 passwd 文件,在 [users] 下面添加账号和密码:

    [user]
    admin = admin
    user = 123456
    xxx = xxx

    格式如下:

    用户名 = 密码
  2. 启动 svn 服务器。

    svnserve -d -r /home/ubuntu/test/svn/myCode

    当回车后没有返回结果时便说明启动成功,如果显示错误则需重新配置 svn。

4. SVN 项目的导入导出及使用

  1. 导入本地代码到服务器。

    svn import /home/ubuntu/test/love_source svn://localhost/mycode/love_source --username=admin --password=admin -m "初始化导入"
  2. 从服务器下载代码到本地,这里就又是我的 Ubuntu 环境,你可以根据项目需要下载到不同的客户端,只需将 localhost 改为 服务器的 ip 地址。

    svn checkout svn://localhost/mycode --username=admin --password=admin  /home/ubuntu/test/code
  3. 创建一个新文件夹并提交。

    mkdir branches
    svn add branches
    svn commit -m "new folder"
  4. 创建新分支。

    比如我们这里的 love 文件夹是我们的主线,我们创建一个 love 的新分支并提交:

    svn copy love/ branches/my_branch
    svn commit -m "add my_branch"

    接着就可以切换到 my_branch 分支进行开发,比如这里切换到新分支并创建 index.html 文件,将 index.html 加入版本控制并提交到版本库中:

    cd branches/my_branch/
    vim index.html
    svn add index.html
    svn commit -m "add index.html"
  5. 合并分支。

    切回 love 主线,合并分支 my_branch:

    cd /home/ubuntu/test/code/love_source/love
    svn update
    svn merge ../branches/my_branch/

    svn update :将当前目录及其子目录下的所有文件都更新到最新版本。

    这里可能会遇到 SVN MERGE: Unreadable path encountered; access denied , 这是因为打开了匿名获取权限造成的,将 anon-access = none 就可以了。

    最后再将合并好的 love主线提交到版本库中:

    svn commit -m "add index.html"

至此,我们便完成了 SVN 的认识,安装配置,基本使用的操作步骤。

5. 参考链接:

6. 常用命令:

Linux公社有篇文章写的很好,这里给出链接,可以参考下:

https://www.linuxidc.com/Linux/2011-09/42347.htm

SVN教程 -- 基于自己学习记录的更多相关文章

  1. Git 教程 -- 基于自己学习记录

    Git 教程 -- 基于自己学习记录 1. 引言 由于学校布置了一项熟悉 git 和 svn 操作的实验,所以自己重新温习了下 git,记录过程在这. 2. 注册登录 GitHub. 3. 选择一个仓 ...

  2. Jquery基础教程第二版学习记录

    本文仅为个人jquery基础的学习,简单的记录以备忘. 在线手册:http://www.php100.com/manual/jquery/第一章:jquery入门基础jquery知识:jquery能做 ...

  3. gulp入门学习教程(入门学习记录)

    前言 最近在通过教学视频学习angularjs,其中有gulp的教学部分,对其的介绍为可以对文件进行合并,压缩,格式化,监听,测试,检查等操作时,看到前三种功能我的心理思想是,网上有很多在线压缩,在线 ...

  4. 面向对象与基于对象 学习记录 thread举例

    /********************************************************************/* @file* @author def< qq gr ...

  5. Git学习记录 力做全网最强入门教程

    目录 Git学习记录 力做全网最强入门教程 什么是GitHub? 什么是Git? Git的配置 Git的安装(只介绍windos操作系统下) Git的配置 至此我们的入门教程到此结束,更新中级教程要等 ...

  6. SpringCloud基础教程学习记录

    这个学习记录是学习自翟永超前辈的SpringCloud的基础教程. 自己写这个教程的目的主要是在于,想要更凝练总结一些其中的一些实用点,顺便做个汇总,这样自己在复习查看的时候更加方便,也能顺着自己的思 ...

  7. (一)《SQL进阶教程》学习记录--CASE

    背景:最近用到统计之类的复杂Sql比较多,有种"提笔忘字"的感觉,看书练习,举一反三,巩固加强. (一) <SQL进阶教程>学习记录--CASE (二) <SQL ...

  8. XCode中使用SVN 教程

    修改subversion.config方法: 可以直接在终端上输入:vi ~/.subversion/config来编辑. 也可以通过Finder搜索.subversion,点击下边的+号,进入高级搜 ...

  9. Git学习记录--git仓库

    Git是一款强大的版本控制工具,与svn相比git的分布式提交,本地仓库等在使用时确实比较方便.当然两者之间各有优劣,我在这里不多做比较.由于之前少有接触git,只是零星大致地了解一点,所以找时间系统 ...

随机推荐

  1. asp.net webapi 参数绑定总结

    首先必须得更正下自己一直以来对于get请求和post请求理解的一个误区:get请求只能通过url传参,post请求只能通过body传参. 其实上面的理解是错误的,翻阅了不少资料及具体实践,正确理解应该 ...

  2. 在mybatis中模糊查询有三种写法

    <select id="selectStudentsByName" resultType="Student"> <!--第一种-->  ...

  3. react-navigation 3.x版本的安装以及react-native-gesture-handler配置

    一.安装依赖,使用npm或yarn命令,3.x版本必须安装react-native-gesture-handler react-navigation react-native-gesture-hand ...

  4. Ant+jmeter+jenkins搭建测试的持续集成

    前提: Ant+jmeter 已经搭建完成并成功运行(参看ant+jmeter自动化性能测试) Jenkins在本地已经安装可运行(参看上一篇) 1.下载Jenkins安装 2.浏览器输入地址http ...

  5. [udemy]WebDevelopment_CSS

    Your First CSS(Cascading Style Sheets) Cascading means it always takes selector that is at the end 即 ...

  6. Golang之反射(重点!!)

    1.反射:可以在运行时动态获取变量的相关信息 Import(“reflect”) 两个函数: reflect.TypeOf()//获取变量的类型,返回reflect.Type类型reflect.Val ...

  7. Golang之函数练习

    小例题: package main import "fmt" /* 函数练习, 可变参数使用 写一个函数add 支持1个或多个int相加,并返回相加结果 写一个函数concat,支 ...

  8. 生物信息学——RNA的剪切过程

    生物信息学——RNA的剪切过程   外显子(exon expressed region)是真核生物基因的一部分,它在剪接(Splicing)后仍会被保存下来,并可在蛋白质生物合成过程中被表达为蛋白质. ...

  9. 【配色指南】UI设计中使用明亮色彩的利与弊,你知多少?

    以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 合理运用色彩是每个设计师都应必须具备的技能,特别是插画师和UI设计师.随着扁平化设计和Materia ...

  10. LAMP环境配置踩坑2外网无法访问

    理论上我们配置LAMP环境的时候都会对httpd.config进行更改 vi /etc/httpd/conf/httpd.conf 把override node改成override all 并且开启8 ...