SVN教程 -- 基于自己学习记录
SVN教程 -- 基于自己学习记录
1. 概述
a. 什么是SVN?
Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统。相较于 git ,svn 是集中式版本控制系统。
b. 什么是集中式版本控制系统?
集中式版本控制系统可以这样理解:所有的源代码都放在统一的服务器上,开发者从服务器下载项目组的最新代码,进入自己的分支进行开发工作,提交代码,最后再把自己的分支合并到服务器主分支上,更新服务器源代码。由于源代码最后都是放在服务器上的,服务器统一集中管理,所以我们把这种操作模式叫做集中式管理。
2. 安装
这里以 Ubuntu 14.04.5 LTS 安装 SVN 为例,使用下列命令安装 SVN:
sudo apt-get install subversion
安装完成后输入:
svn –-version
出现下列信息即安装成功。
3. 配置 SVN 服务器
安装好 SVN 后,我们便可以进行相关操作了。
在
/home/ubuntu/test
下创建一个 svn 文件夹。cd /home/ubuntu/test
mkdir svn
在 svn 文件夹下创建一个 myCode文件夹仓库。
svnadmin create /home/ubuntu/test/svn/myCode
创建完成后的目录结构如图所示:
创建完成后,我们需要配置一下 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
格式如下:
用户名 = 密码
启动 svn 服务器。
svnserve -d -r /home/ubuntu/test/svn/myCode
当回车后没有返回结果时便说明启动成功,如果显示错误则需重新配置 svn。
4. SVN 项目的导入导出及使用
导入本地代码到服务器。
svn import /home/ubuntu/test/love_source svn://localhost/mycode/love_source --username=admin --password=admin -m "初始化导入"
从服务器下载代码到本地,这里就又是我的 Ubuntu 环境,你可以根据项目需要下载到不同的客户端,只需将 localhost 改为 服务器的 ip 地址。
svn checkout svn://localhost/mycode --username=admin --password=admin /home/ubuntu/test/code
创建一个新文件夹并提交。
mkdir branches
svn add branches
svn commit -m "new folder"
创建新分支。
比如我们这里的 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"
合并分支。
切回 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教程 -- 基于自己学习记录的更多相关文章
- Git 教程 -- 基于自己学习记录
Git 教程 -- 基于自己学习记录 1. 引言 由于学校布置了一项熟悉 git 和 svn 操作的实验,所以自己重新温习了下 git,记录过程在这. 2. 注册登录 GitHub. 3. 选择一个仓 ...
- Jquery基础教程第二版学习记录
本文仅为个人jquery基础的学习,简单的记录以备忘. 在线手册:http://www.php100.com/manual/jquery/第一章:jquery入门基础jquery知识:jquery能做 ...
- gulp入门学习教程(入门学习记录)
前言 最近在通过教学视频学习angularjs,其中有gulp的教学部分,对其的介绍为可以对文件进行合并,压缩,格式化,监听,测试,检查等操作时,看到前三种功能我的心理思想是,网上有很多在线压缩,在线 ...
- 面向对象与基于对象 学习记录 thread举例
/********************************************************************/* @file* @author def< qq gr ...
- Git学习记录 力做全网最强入门教程
目录 Git学习记录 力做全网最强入门教程 什么是GitHub? 什么是Git? Git的配置 Git的安装(只介绍windos操作系统下) Git的配置 至此我们的入门教程到此结束,更新中级教程要等 ...
- SpringCloud基础教程学习记录
这个学习记录是学习自翟永超前辈的SpringCloud的基础教程. 自己写这个教程的目的主要是在于,想要更凝练总结一些其中的一些实用点,顺便做个汇总,这样自己在复习查看的时候更加方便,也能顺着自己的思 ...
- (一)《SQL进阶教程》学习记录--CASE
背景:最近用到统计之类的复杂Sql比较多,有种"提笔忘字"的感觉,看书练习,举一反三,巩固加强. (一) <SQL进阶教程>学习记录--CASE (二) <SQL ...
- XCode中使用SVN 教程
修改subversion.config方法: 可以直接在终端上输入:vi ~/.subversion/config来编辑. 也可以通过Finder搜索.subversion,点击下边的+号,进入高级搜 ...
- Git学习记录--git仓库
Git是一款强大的版本控制工具,与svn相比git的分布式提交,本地仓库等在使用时确实比较方便.当然两者之间各有优劣,我在这里不多做比较.由于之前少有接触git,只是零星大致地了解一点,所以找时间系统 ...
随机推荐
- 解决MongoDB分页查询之count查询慢的问题
一.概述 问题描述:在项目中优化动态查询分页接口时,发现count查询很慢(数据量大概30万),那如何解决这个问题呢? 解决方法:添加索引,多个查询条件可以添加复合索引 二.测试对比 1. 未加索引时 ...
- clr相关名词
程序集:一个或多个类型定义文件和资源文件的集合 Native Code(本机代码): 已被编译为特定于处理器的机器码的代码. 本地代码(native code)是计算机编程(代码),编译用来运行一个特 ...
- Multithread之为什么spinlock必须是volatile?
[Multithread之为什么spinlock必须是volatile?] 1.编译器的优化 在本次线程内,当读取一个变量时,为提高存取速度,编译器优化时有时会先把变量读取到一个寄存器中:以后再取变量 ...
- Android SDK Manager检查更新时遇到Failed to fetch URL xxxxxxx reason: Connection to xxxxxx的错误的解决办法!
首先说明的是这个问题并不是每个人都存在,但是我和我的一个同学都有这种情况,所以我同学百度了一下,找出了解决办法. 问题描述: 使用Android SDK Manager检查在线更新,提示以下错误: & ...
- MySQL学习2---索引
MySQL 索引 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 索引分单列索引和组合索引.单列索引,即一个索引只包含单个列,一个表可以有多个单列索引, ...
- linux下,MySQL默认的数据文档存储目录为/var/lib/mysql。
0.说明 Linux下更改yum默认安装的mysql路径datadir. linux下,MySQL默认的数据文档存储目录为/var/lib/mysql. 假如要把MySQL目录移到/home/data ...
- jdeveloper 恢复默认配置
1>jdeveloper的环境设置出现问题,恢复默认的配置,需要删除保存再登录账户中的配置文件,以达到恢复默认配置的目的.只需删除以下配置文件目录即可. C:\Users\当前登录用户名\App ...
- Visual Studio工具 vcpkg简介
博客参考: https://blog.csdn.net/cjmqas/article/details/79282847#43-%E7%A7%BB%E9%99%A4%E5%85%A8%E5%B1%80% ...
- loadrunner--步长(Pacing)的设置及作用
Pacing时间的设置需要根据使用您系统的用户的行为来决定. 如果您那边的用户在您的系统上做完一套操作后不会做下一套,则可能不需使用Pacing. 如果您那边用户在系统上需要不断地做同样的操作,比如他 ...
- [SQL]查询数据库中具有某个字段名的表
SELECT t.name AS table_name, c.name AS column_name FROM XOIFundData.sys.tables AS t INNER JOIN XOIFu ...