Linux下搭建版本控制器SVN

关于版本控制器,大致可分为集中式和分布式两种。

集中式的版本控制器通常会存在一个中央服务器,主要是用来存放版本库的,(这里暂且先不说分支的事)当我们工作之前,首先需要从中央服务器得到一份最新版本的代码,修改完毕之后,再次推送到中央服务器。集中式的版本控制器有个最大的缺点,就是必须要联网才能工作,同时,一旦中央服务器挂掉,整个项目就全部奔溃,但是用起来确实要方便一些。

分布式版本控制器的优势就很明显了,对于分布式的版本控制器,并没有中央服务器一说,加入该版本控制器的每个人的电脑上都有一个完整的版本库,因此,也同时避免了联网的缺点。当进行了本地的修改之后,只要推送给彼此,各自的修改就都可以看到。为了方便,通常的分布式版本控制器中也有一台类似于中央处理器的机器,只是为了大家相互推送的时候更加地方便,即使一台服务器down掉,只需要再拷贝一个版本库即可,容灾性要好得多。

对于这两种版本控制器,SVN是集中式的代表,Git是分布式的代表,两者各有优缺点,在互联网公司中,两者都有着一定的应用。这里要说的是SVN的搭建与操作。

环境:  CentOS6.5

操作之前:安装svnserver,直接使用yum安装即可,一些情况下,电脑是自动安装了svn和git的

开始操作:

1、SVN仓库的建立


a、创建项目目录dir,并进行仓库初始化

mkdir  /svn_repo

svnadmin create /svn_repo

b、修改仓库目录下的conf文件夹下的三个文件的内容,每行开头没有空格

authz:权限相关信息


[/]                              # 仓库所在目录

muhui = rw                # 给muhui用户rw权限

*=                              # 其他用户没有任何权限

passwd:用户名和密码相关信息

user = passswd

svnserver.conf:相关配置路径


anon-access = none                匿名用户权限

auth-access = write               授权用户有写权限

password-db = passwd              密码文件,未指定路径,表示当前目录

authz-db = authz                 权限文件

realm = /svn_repo/httpd            版本库所在目录

2、SVN项目目录

a、创建主工作目录manager

[[email protected] svn_test]# tree

.

└── manager

└── httpd

├── branched       # 子分支目录

├── tags

└── trunk          # 主分支目录

进入到manager目录,3将manager的目录结构同步到仓库,在httpd项目目录下,有了这个三个文件夹。

svn import httpd svn://127.0.0.1/httpd -m "init httpd"

b、创建用户,并将主分支的代码检出到本地。


mkdir -p  /svn_test/dev1

cd  /svn_test/dev1

svn  co svn://127.0.0.1/httpd/trunk httpd 

c、文件修改,并提交文件


[[email protected] httpd]# vim main.cpp

[[email protected] httpd]# ls

main.cpp

[[email protected] httpd]# svn st 

?       main.cpp                                                     #  ?表示该文件未纳入版本控制

[[email protected] httpd]# svn add main.cpp             # add将该文件添加到版本控制

A         main.cpp

[[email protected] httpd]# svn ci -m "dev1 modify"   # 将修改提交到服务器

增加           main.cpp

传输文件数据.

提交后的版本为 2。

3、多人协作

需要说明的一点,多人协作,和多分支操作是两个概念。一个分支上可以有多个user在操作,这里说的是在主分支下的多用户操作。

a、创建用户dev2,下拉代码修改并再次提交


[[email protected] httpd]# pwd

/svn_test/dev2/httpd

[[email protected] httpd]# vim main.cpp

[[email protected] httpd]# svn st 

M       main.cpp

[[email protected] httpd]# svn up                           # 更新代码,防止远程库代码已被更改

版本 2。

[[email protected] httpd]# svn log                          # 查看提交日志信息

.........

[[email protected] httpd]# svn diff                          # 查看修改信息

.........

[[email protected] httpd]# svn ci -m "dev2 write sub"       # 提交代码到仓库

.........

b、冲突解决

冲突原因:多个用户同时下拉一份代码进行修改,修改完毕在提交之前,未再次svn  up更新,多个用户同时对一个版本进行修改,造成冲突。


[[email protected] httpd]# svn ci -m "dev1--complict"             # 提交失败,存在冲突

正在发送       main.cpp

传输文件数据.svn: 提交失败(细节如下):

svn: 文件 “/trunk/main.cpp” 已经过时

[[email protected] httpd]# svn up

在 “main.cpp” 中发现冲突。

选择: (p) 推迟,(df) 显示全部差异,(e) 编辑,

(mc) 我的版本, (tc) 他人的版本,

(s) 显示全部选项: p                                                # p选项,进行延时

C    main.cpp

更新到版本 4。

冲突概要:

正文冲突:1

# 出现很多临时文件,为各个版本的源文件

[[email protected] httpd]# svn resolve --accept working main.cpp           # 冲突双方进行协商,修改源文件,之后临时文件被删除

“main.cpp”的冲突状态已解决

[[email protected] httpd]# svn ci -m "deal complict"                      # 再次提交,冲突解决

4、分支操作

a、分支创建

     [[email protected] dev3]# svn copy svn://127.0.0.1/httpd/trunk svn://127.0.0.1/httpd/branched/branch1 -m "add new branch1"  
     提交后的版本为 6。

#  svn分支创建的过程,实际上是对主分支的一份拷贝

b、查看共有多少个分支

 [[email protected] dev3]# svn list svn://127.0.0.1/httpd/branched -v
           6 muhui                 5月 28 09:38 ./
           6 muhui                 5月 28 09:38 branch1/

c、从分支branch1分支检出代码到当前工作目录,并查看当前属于那个分支

 [[email protected] dev3]# svn  co svn://127.0.0.1/httpd/branched/branch1  httpd
     A    httpd/main.cpp
     取出版本 6。
     [[email protected] httpd]# svn info
     路径: .
     URL: svn://127.0.0.1/httpd/branched/branch1
     版本库根: svn://127.0.0.1/httpd
     版本库 UUID: 39c9dc13-9f79-4073-bb0e-2b58c9b71fbb
     版本: 6
     节点种类: 目录
     调度: 正常
     最后修改的作者: muhui
     最后修改的版本: 6
     最后修改的时间: 2017-05-28 09:38:49 +0800 (日, 2017-05-28)

d、分支合并操作,要在主分支目录下进行合并

分支上的用户修改文件内容,并检入到分支

  [[email protected] httpd]# svn ci -m "branch1 modify"
     正在发送       main.cpp
     传输文件数据.
     提交后的版本为 7。

获取查看分支时的版本号

 [[email protected] httpd]# svn log --verbose --stop-on-copy
     ------------------------------------------------------------------------
     r6 | muhui | 2017-05-28 09:38:49 +0800 (日, 2017-05-28) | 1 行
     改变的路径:
        A /branched/branch1 (从 /trunk:5)
     add new branch1
     ------------------------------------------------------------------------

获取主干目录的最新版本号

 [[email protected] httpd]# svn up  
     版本 7。

分支合并

  [[email protected] httpd]# 
svn merge -r 6:7 svn://127.0.0.1/httpd/branched/branch1

5、版本回退

1、仅仅修改源文件,但还未进行ci操作

[[email protected] httpd]#  
svn  revert main.cpp

2、修改完毕的结果已经进行了commit

[[email protected] httpd]# svn  up          # 获取版本库最新版本      
[[email protected] httpd]# svn  log         # 找到要回滚的版本号
[[email protected] httpd]# svn merge -r 9:8  main.cpp         # merge进行回退,9表示当前版本号,8表示要回退到的版本号

------muhuizz整理

时间: 2024-11-04 06:55:33

Linux下搭建版本控制器SVN的相关文章

linux下搭建SVN服务器

最近搞了一台云服务器,尝试部署一些服务器相关的东西,作为开发用服务器,首先考虑搭建的是SVN服务器.记录一下搭建的过程,方便以后查看. 一.安装svn软件,有些云服务器会有安装svn服务器,有些没有. # yum install -y subversion                        //在线安装svn # svnserve --version                                  //检查svn版本 二.创建svn版本库 1.创建一个项目的版本目录

Linux下搭建jenkins+svn+http+maven自动化部署

服务器设置: 卸载redhat的yum,安装centos的yum,配置第三方yum 1.删除redhat原有的rpm -qa |grep yum |xargs rpm -e yum --nodeps 2.下载yum安装文件,如果下载时找不到文件,http://mirrors.163.com/centos/6/os/x86_64/ wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-3.2.27-14.el6.centos.noa

centos下搭建多项目svn服务器

svn是多人协作开发中的利器,是一个开放源代码的版本控制系统. 相比与git,他的操作更加简单,windows下有优秀的图形界面,并且支持的文件类型比较多. 本文讲述如何在linux下搭建一个svn服务器,并且进行权限分配,项目管理. 服务器环境:centos7 安装步骤: 1.yum install subversion -y 出现complete即代表安装完成. 2.选择一个目录作为svn服务器根目录 我选择的是 /srv mkdir /srv/svn 3.创建版本库,因为要展示多个版本库的

linux下搭建nginx+php(FastCGI)+mysql运行环境

一.安装环境 1.CentOS5.5 2.php5.4 3.MySQL5.5.19 二.安装程序依赖库和开发环境 为了省事把所需要的库文件全都安装上,可以使用rpm包安装,也可以用yum命令安装, 1 yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc gli

Linux下搭建Apache服务器(完整版)

Linux下搭建Apache服务器(完整版) 什么是Apache? Apache Licence是著名的非盈利开源组织Apache采用的协议.该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件).需要满足的条件也和BSD类似 Apache主要特点 1.开放源代码.跨平台应用 2.支持多种网页编程语言 3.模块化设计 .运行稳定.良好的安全性 Apache软件版本 1.X  1.目前最高版本是1.3,运行稳定  2.向下兼容性较好,但缺乏一些较新

Linux下搭建Java开发环境

Red Hat Package Manager 简称rpm rpm格式的文件就是我们可以使用RPM命令进行管理的软件包格式的文件 JDK的安装 #sh /root/Desktop/jdk-6u23-linux-i586-rpm.bin .bin 可以使用sh命令来解压执行 Linux的用户的登录过程 /etc/profile /etc/profile.d(各个脚本) /etc/bash.bashrc /home/[username]具体用户目录/.bashrc .bash_profile JDK

linux下搭建lamp环境以及安装swoole扩展

linux下搭建lamp环境以及安装swoole扩展   一.CentOS 6.5使用yum快速搭建LAMP环境 准备工作:先更新一下yum源 输入下面命令: yum -y update 1.安装Apache [[email protected] ~]# yum -y install httpd # 开机自启动 [[email protected] ~]# chkconfig httpd on # 启动httpd 服务 [[email protected] ~]# service httpd s

LINUX下搭建JAVA的开发环境

LINUX下搭建JAVA的开发环境 (2009-07-13 10:04:13) 下面就将Linux下JAVA开发环境的搭建详细道来: 1.Linux下JDK的安装 至于下载JDK的二进制可执行文件,这里就不讲了,大家直接到官方网去下载就可以了. (1)我下载下来的JDK安装文件名称为:jdk-1_5_0_14-linux-i586-rpm.bin,我把它保存在/tools目录下. (2)打开一个终端,依次输入以下命令: # cd /tools                    进入JDK安装

Linux下搭建PHP开发环境(LAMP)

LAMP:Linux+Apache+Mysql/MariaDB+Perl/PHP/Python 安装方法如下: 注:Ubuntu下可使用sudo su 命名切换到root用户. 开始安装之前,先执行EZHTTP安装前的准备工作. 一.使用screen(可选) 由于编译安装Nginx Apache PHP MySQL等软件会花费比较长的时间,难免会出现由于网络意外中断而导致安装也中断了,所以为了避免此问题,可以使用screen来安装. screen的使用方法如下: 1.安装screen ubunt