SVN基础操作

安装

#大多数Linux版本自带svn
svn --version
#如果没有安装可用yum安装
yum install subversion

生命周期

创建版本库

检出

更新

执行变更

复查变化

修复错误

解决冲突

提交更改

启动模式

#创建版本库目录
mkdir /opt/svn
#创建版本库
svnadmin create /opt/svn/ku1 #使用svnserve启动服务
svnserve -d -r 目录 --listen-port 端口号 #-r两种不同的方式
#方式一:直接指定到版本库(单库)=================
svnserve -d -r /opt/svn/ku1
#对应的authz配置权限应该这么写:
[groups]
admin=user1,user2
[/]
@admin=rw
user3=r
#使用类似URL svn://192.168.168.1/ 即可访问ku1 #方式二:指定版本库的上级目录(多库)
svnserve -d -r /opt/svn
#这样一个svnserve可以为多个库工作,authz这样写
[groups]
admin=user1,user2,user3
other=user4,user5
[ku1:/]
@admin=rw
@other=r
[ku2:/]
@admin=r
@other=rw
#使用类似URL svn://192.168.168.1/ku1 即可访问ku1,svn://192.168.168.1/ku2 即可访问ku2

创建版本库

svnadmin create /opt/svn/ku1

进入conf目录修改配置

1、服务配置文件svnserve.conf (注意配置删除#号时,空格要删干净,不然报错)

[general]
#anon-access: 控制非鉴权用户访问版本库的权限,取值范围为"write"、"read"和"none"。 即"write"为可读可写,"read"为只读,"none"表示无访问权限。 缺省值:read
anon-access = none
#auth-access: 控制鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。 即"write"为可读可写,"read"为只读,"none"表示无访问权限。 缺省值:write
auth-access = write
#authz-db: 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。 除非指定绝对路径,否则文件位置为相对conf目录的相对路径。 缺省值:authz
authz-db = /home/svn/authz
password-db = /home/svn/passwd
#realm: 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的 认证域相同,建议使用相同的用户名口令数据文件。 缺省值:一个UUID(Universal Unique IDentifier,全局唯一标示)。
realm = ku1

2、用户名口令文件passwd

用户名口令文件由svnserve.conf的配置项password-db指定,缺省为conf目录中的passwd。

#<用户名> = <口令>
[users]
admin = 123456
user1 = 456789

3、权限配置文件authz

权限配置文件由svnserve.conf的配置项authz-db指定,缺省为conf目录中的authz。

配置格式为<用户组> = <用户列表>,配置详情见启动模式部分

检出操作

#检出成功后在当前目录下生成ku1副本目录
svn checkout svn://192.168.168.1/ku1 --username=admin --password=123456
#如果不想生成新的目录,直接在当前目录下检出,可用下面命令,注意/和.中间有空格
svn checkout svn://192.168.168.1/ku1/ . --username=admin --password=123456

提交操作

#将文件fileName加到版本控制,等待提交到版本库。
svn add fileName
#查看工作副本中的状态(没到版本控制中为?,加入版本控制了为A)
svn status
#提交,-m为注释
svn commit -m "修改了XXX"

Hooks同步代码到线上目录

hooks目录里创建一个post-commit , 需要可执行权限 , 否则报255错误

#!/bin/sh
export LANG=en_US.utf8
SVN_PATH=/usr/bin/svn
WEB_PATH=/var/www/html/project
$SVN_PATH update $WEB_PATH --username 'admin' --password '123456' --no-auth-cache

注意第一次得先在project目录执行检出checkout操作,否则文件不会同步进去 (大坑)

import将未版本化文件导入版本库

#如果需要在已运行的项目上加上svn版本控制,可用import导入版本库
svn import -m "把project文件导入版本库" /var/www/html/project svn://192.168.168.1/ku1

SVN基础操作的更多相关文章

  1. Mac下Git的基础操作

    目前最火的版本控制软件是Git了吧,今天简单梳理一下Mac下Git的基础操作~~ 一.什么是Git Git是一个分布式代码管理工具,用于敏捷的处理或大或小的项目,类似的工具还有svn. 基于Git的快 ...

  2. 版本控制,svn基础,实战案例,RPM打包

                                                   版本控制,svn基础,实战案例,RPM打包 案例1:Subversion基本操作 案例2:使用Subver ...

  3. python基础操作以及hdfs操作

    目录 前言 基础操作 hdfs操作 总结 一.前言        作为一个全栈工程师,必须要熟练掌握各种语言...HelloWorld.最近就被"逼着"走向了python开发之路, ...

  4. MYSQL基础操作

    MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...

  5. 【Learning Python】【第二章】Python基础类型和基础操作

    基础类型: 整型: py 3.0解决了整数溢出的问题,意味着整型不必考虑32位,64位,有无符号等问题,你写一个1亿亿亿,就是1亿亿亿,不会溢出 a = 10 ** 240 print(a) 执行以上 ...

  6. Emacs学习心得之 基础操作

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Emacs学习心得之 基础操作 1.前言与学习计划2.Emacs基础操作 一. 前言与学习计 ...

  7. Git基础操作

    配置秘钥 1.检查本机有没有秘钥 检查~/.ssh看看是否有名为d_rsa.pub和id_dsa.pub的2个文件. $ ~/.sshbash: /c/Users/lenovo/.ssh: Is a ...

  8. activiti基础操作

    package activitiTest; import java.io.InputStream; import java.util.List; import java.util.zip.ZipInp ...

  9. 《Genesis-3D开源游戏引擎-官方录制系列视频教程:基础操作篇》

    注:本系列教程仅针对引擎编辑器:v1.2.2及以下版本 G3D基础操作   第一课<G3D编辑器初探> G3D编辑器介绍,依托于一个复杂场景,讲解了场景视图及其基本操作,属性面板和工具栏的 ...

随机推荐

  1. 检索 COM 类工厂中 CLSID 为 {00021A20-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80080005

    创建Excel对象失败: Excel.Application xApp = new Excel.Application(); 错误提示:{"检索 COM 类工厂中 CLSID 为 {0002 ...

  2. 【Linq】常用语法汇总

    语言继承查询(Language Integrated Query, LINQ),在C#编程语言中集成了查询语法,可以用相同的语法访问不同的数据源,LINQ提供了不同数据源的抽象层,所以可以使用相同语法 ...

  3. django模板系统(下)

    主要内容:母版,继承母版,块,组件,静态文件 母版 <!DOCTYPE html> <html lang="en"> <head> <me ...

  4. set集合综合案例

    案例01:生成0-10之间5个不相等的数 方法1:使用list集合实现 import random list01 = [] for i in range(100): num01 = random.ra ...

  5. 【洛谷】【单调栈】P4333 [COI2007] Patrik

    --接上一篇题解,[洛谷][单调栈]P1823音乐会的等待 关于题目大意在上一篇题解里已经说清楚了,这里不再多阐述 想看题目->戳这里 [算法分析:] 在对元素a进行判断时,如果它与栈顶元素相等 ...

  6. [USACO2004OPEN]Cave Cows 3

    嘟嘟嘟 看完题后突然想起jf巨佬的话:"看到曼哈顿距离就想转切比雪夫距离." 于是我就转换了一下. 然后问题变成了求 \[max_{i, j \in n} \{ max \{ |x ...

  7. php可逆加密解密

    函数: function encrypt($data, $key) { $prep_code = serialize($data); $block = mcrypt_get_block_size('d ...

  8. Python高级知识点总结

    一.可迭代对象.迭代器对象和生成器 像list, tuple等这些序列是可以使用for...in ...语句来进行遍历输出的.这是为什么呢?这就需要知道可迭代对象(Iterable).迭代器对象(It ...

  9. 2018-2019-2 20165302 《网络对抗技术》Exp3 免杀原理与实践

    一,实验要求 (我是真的不知道为什么截图中都有学号和姓名信息了还要求改主机名......而且实验要求里也没有明确说.做完之后听别人说的,肯定是不能重新截图了,要扣分就扣吧) 通过本部分内容的学习,认识 ...

  10. Node.js实战(十)之EventEmitter

    Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列. Node.js 里面的许多对象都会分发事件:一个 net.Server 对象会在每次有新连接时触发一个事件, 一个 fs. ...