版本控制之svn

 

1.SVN概述 2php

1.1什么是 SVN 2html

1.2 SVN 工做原理 2mysql

1.3 Svn工做目录说明 3linux

1.4 SVN 与GIT 的区别 3c++

2.SYN的安装 4git

2.1安装所须要的包 4web

2.2 新建一个目录用于存储svn全部文件 4sql

2.3 新建一个版本仓库 4shell

2.4 初始化版本仓库的目录 5数据库

2.5 添加用户 5

2.6 修改用户访问策略 5

2.7 修改svnserve.conf文件,让用户策略配置生效 6

2.8 启动服务器 6

2.9 测试服务器 6

3.配置SVN服务器的HTTP支持 8

3.1 转换SVN服务器的密码 8

3.2 修改httpd.conf,添加关于SVN服务器的内容 9

3.3 启动httpd服务器 9

3.4 用浏览器访问测试 9

4.SVNManager 10

4.1 安装环境 10

4.2下载svnmanager,解压并放置到/var/www/html 11

4.3 安装VersionControl_SVN 11

4.4 httpd.conf文件添加内容,这么作是为了更加安全 11

4.5 建立svnmanager使用的mysql数据库 11

4.6 配置svnmanager 13

4.7重启mysql,httpd 14

4.8 访问http://192.168.4.5/svnmanager进行测试 14

1. SVN 的常见操做 16

2. 各包说明 18

错误总结 19

1)提示没有php-mbstring 19

2)语法错误 19

3装包的时候提示有依赖关系 19

4SVNManager只有User Admin这一项 20

 

1.SVN概述

1.1什么是 SVN

SVN(Subversion)是一种开放源代码的,跨平台的集中式版本控制系统/版本控制工具,因为其优于CVS的一些特色,获得了愈来愈多人的关注和使用(目前有的企业用git稍微多些),支持可在本地访问或经过网络访问的数据库和文件系统存储库。不但提供了常见的比较、修补、标记、提交、回复和分支等功能,并且Subversion 还增长了追踪移动和删除的能力。此外,它支持非 ASCII 文本和二进制数据,全部这一切都使Subversion 不只对传统的编程任务很是有用,同时也适于 Web 开发、图书创做和其余在传统方式下未采纳版本控制功能的领域。

1.2 SVN 工做原理

    SVN的工做原理是在一台服务器上创建一个源代码库,库里能够存放许多不一样项目的源代码或文件等。由源代码库管理员统一管理这些源程序。每一个用户在使用源代码库以前,首先要把源代码库里的项目文件下载到本地,而后用户能够在本地任意修改,最后用svn命令进行提交,由svn源代码库统一管理修改。这样,只有一我的在修改文件同样,既避免了冲突,又能够作到跟踪文件变化等。同时也能够解决如下常见的问题:

(1)代码管理混乱

(2)解决代码冲突困难

(3)在代码整合期间引起bug

(4)没法对代码的拥有者进行权限控制

(5)项目不一样版本的发布困难

(6)代码/文件等备份功能

1.3 Svn工做目录说明

路径 类型 做用
conf 目录 这个仓库的配置文件(用户访问账号,权限等)
format 文件 只有一个整数,存放当前配置文件的版本号
dav 目录 供mod_dav_svn使用
db 目录 全部版本控制的数据存储目录
db/revprops 目录 记录版本属性
db/revs 目录 版本库数据存储真实目录
db/fs-type 文件 版本数据库的真实存储格式,有fsfs和bdb两种存储格式
db/uuid 文件 存储版本库惟一标识符(可参考《svn版本库uuid简述》)
hooks 目录 存放hook脚本文件的目录,版本库勾子目录
locks 目录 存储库锁目录,用来跟踪库的来访者

 

1.4 SVN 与GIT 的区别

SVN 集中式版本控制系统

Svn版本控制系统格式集中式的数据管理, 存在一个中央版本库,全部开发人员本地开发所使用的代码都是来自于这个版本库, 提交代码也都必须提交到这个中央版本库。

SVN 版本控制系统工做流程:

1. 在中央库上建立或从主干复制一个分支

2. 从中央库checkout 下来这个分支的代码

3. 增长本身的代码文件, 修改现存的代码或删除代码文件

4. Commit 代码, 若是有人在刚刚的分支上提交了代码, 你就会被提示代码更新

5. 你须要先update 你的代码后再提交。 Update 代码的时候出现冲突, 须要解决冲突再进行提交。

SVN 的优缺点

优势

1) 管理方便,逻辑清晰

2) 集中式管理,保证数据安全性

3) 代码一致性高

4) 适合开发人数很少的项目开发

5) 普及度较高(逐步被git 代替)

缺点

1) 依赖网络,当没法链接到中央版本库的环境下, 没法提交代码中央版本库的存储作备份,(分布式版本控制要好些)

2) SVN 备份须要备份全部代码文件以及全部的版本记录。

2.SYN的安装

2.1安装所须要的包

yum -y install subversion mysql-server httpd mod_dav_svn mod_perl

yum -y install wget gcc-c++ perl*  ntsysv (make unzip)

2.2 新建一个目录用于存储svn全部文件

mkdir -p  /home/svn/                 //新建一个目录用于存储SVN全部文件

2.3 新建一个版本仓库

svnadmin create /home/svn/daluPro

2.4 初始化版本仓库的目录

mkdir  /daluPro /daluPro/server /daluPro/client /daluPro/test   

                                           //创建临时目录

svn import /daluPro/ file:///home/svn/daluPro -m “初始化SVN目录” 

rm -rf /daluPro                         //删除临时创建的目录,没用的话删除清空间

2.5 添加用户

vim /home/svn/daluPro/conf/passwd

//打开文件后在文件中添加以下行,一个形如username = password的条目

dalu = zhang

server_group = server_group

client_group = client_group

test_group = test_group

2.6 修改用户访问策略

vim /home/svn/daluPro/conf/authz

[groups]

project_p = dalu

project_s = server_group

project_c = client_group

project_t = test_group

[daluPro:/]

@project_p = rw

* =

[daluPro:/server]

@project_p = rw

@project_s = rw

* =

[daluPro:/client]

@project_p = rw

@project_c = rw

* =

[daluPro:/test]

@project_p = rw

@project_s = rw

@project_c = rw

@project_t = rw

* =

以上信息表示,只有dalu有根目录的读写权限,server_group能访问server目录,client_group能访问client目录,全部人均可以访问test目录

2.7 修改svnserve.conf文件,让用户策略配置生效

vim /home/svn/daluPro/conf/svnserve.conf

[general]

anon-access = read

auth-access = write

password-db = /home/svn/daluPro/conf/passwd

authz-db = /home/svn/daluPro/conf/authz

2.8 启动服务器

svn -d -r /home/svn

2.9 测试服务器

测试提取-->登陆以后按提示输入相应的指令,当出现check out revision 1则测试            提取成功

svn co svn://192.168.4.5/daluPro             

spacer.gif

 

测试提交-->编辑一个test.shshell脚本用来测试提交

vim test.sh

svn add test.sh

Svn commit test.sh -m “大路的测试shell脚本

spacer.gif

 

邮件提醒支持

1安装Perl模块Module :: Build

http://search.cpan.org/CPAN/authors/id/D/DA/DAGOLDEN/Module-Build-0.37_06.tar.gz

一共四个包,第一个就装不上

spacer.gif

 

[root@192,168,4,5 /]# tar zxf Module-Build-0.37_06.tar.gz

 

http://search.cpan.org/CPAN/authors/id/A/AP/APLEINER/Net-SMTP_auth-0.08.tar.gz

http://www.cpan.org/authors/id/D/DA/DAGOLDEN/Module-Build_11.tar.gz

http://www.cpan.org/authors/id/D/DW/DWHEELER/

3.配置SVN服务器的HTTP支持

3.1 转换SVN服务器的密码

    因为SVN服务器的密码是明文的,HTTP服务器不支持,因此须要转换成HTTP支持的格式。下面这个perl脚本能够完成这个工做。Htpasswd创建和更新用于基本认证的存储用户/密码的文本文件,若是htpasswd不能读写此文件,它返回一个出错代码,而不作任何修改

#!/usr/bin/perl

use warnings;

use strict;

open (FILE, "passwd") or die ("Cannot open the passwd file!!!\n");

open (OUT_FILE, ">webpasswd") or die ("Cannot open the webpasswd file!!!\n");

close (OUT_FILE);

foreach (<FILE>)

    {

       if($_ =~ m/^[^#].*=/)

           {

               $_ =~ s/=//;

               `htpasswd -b webpasswd $_`;

           }

    }

3.2 修改httpd.conf,添加关于SVN服务器的内容

vim /etc/httpd/conf/httpd.conf

<Location /daluPro>

DAV svn

SVNPath /home/svn/daluPro/AuthType Basic

AuthName “svn for daluPro”

AuthUserFile /home/svn/daluPro/conf/webpasswd

AuthzSVNAccessFile /home/svn/daluPro/conf/authz

Satisfy all

Require valid-user

</Location>

3.3 启动httpd服务器

Service httpd restart

3.4 用浏览器访问测试

192.168.4.5/daluPro/server/ 进行测试,弹出如下页面即成功

spacer.gif

 

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| svn                |

| test               |

+--------------------+

mysql> use svn;

mysql> show tables;

+-------------------+

| Tables_in_svn     |

+-------------------+

| groupprivileges   |

| groups            |

| repo_descriptions |

| repositories      |

| svnserve_pwd      |

| userprivileges    |

| users             |

| usersgroups       |

| usertickets       |

+-------------------+

 

4.SVNManager

4.1 安装环境

在以上的基础,安装下列包就能够了

[root@192,168,4,5 ~]# yum -y groupinstall "PHP Support"

[root@192,168,4,5 ~]# yum -y install php-mysql php-mbstring

4.2下载svnmanager,解压并放置到/var/www/html

[root@192,168,4,5 html]# pwd

/var/www/html

[root@192,168,4,5 html]# ls

svnmanager-1.10.tar.gz

[root@192,168,4,5 html]# tar zxf svnmanager-1.10.tar.gz

[root@192,168,4,5 html]# ls

svnmanager-1.10  svnmanager-1.10.tar.gz

[root@192,168,4,5 html]# mv svnmanager-1.10 svnmanager

[root@192,168,4,5 html]# ls

svnmanager  svnmanager-1.10.tar.gz

4.3 安装VersionControl_SVN

--使用pear命令,pear工具会从服务器自动下载安装

--也能够本身下一份,直接拷贝到svnmanager目录下也能够用

[root@192,168,4,5 html]# /usr/bin/pear install --alldeps VersionControl SVN-0.3.4

[root@192,168,4,5 html]# mv /VersionControl_SVN-0.3.4/ .   //本身下的拷过来

[root@192,168,4,5 html]# ls

svnmanager  svnmanager-1.10.tar.gz  VersionControl_SVN-0.3.4

4.4 httpd.conf文件添加内容,这么作是为了更加安全

[root@192,168,4,5 html]# vim /etc/httpd/conf/httpd.conf

<Directory "/var/www/html/svnmanager/">

AllowOverride None

Order deny,allow

Deny from all

Allow from all

</Directory>

4.5 建立svnmanager使用的mysql数据库

从官网下载RPM

--http://dev.mysql.com.downloads/mysql/

--选择适用于当前系统的bundle集合包

[root@192,168,4,5 mysql]# tar xvf MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar

[root@192,168,4,5 mysql]# ls

MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar

MySQL-client-5.6.15-1.el6.x86_64.rpm

MySQL-devel-5.6.15-1.el6.x86_64.rpm

MySQL-embedded-5.6.15-1.el6.x86_64.rpm

MySQL-server-5.6.15-1.el6.x86_64.rpm

MySQL-shared-5.6.15-1.el6.x86_64.rpm

MySQL-shared-compat-5.6.15-1.el6.x86_64.rpm

MySQL-test-5.6.15-1.el6.x86_64.rpm

卸载系统自带的mysql-servermysql

[root@192,168,4,5 mysql]# yum -y remove mysql-server mysql

[root@192,168,4,5 mysql]# mv /etc/my.cnf /etc/my.cnf.old

安装相应的软件包,推荐U升级安装,可替换冲突文件

[root@192,168,4,5 mysql]# rpm -Uvh MySQL-shared-*.rpm

[root@192,168,4,5 mysql]# rpm -Uvh MySQL-server-5.6.15-1.el6.x86_64.rpm

[root@192,168,4,5 mysql]# rpm -Uvh MySQL-client-5.6.15-1.el6.x86_64.rpm

[root@192,168,4,5 mysql]# rpm -Uvh MySQL-devel-5.6.15-1.el6.x86_64.rpm

启动MySQL数据库服务器,设为开机自启,查看mysql状态

[root@192,168,4,5 mysql]# /etc/init.d/mysql

[root@192,168,4,5 mysql]# chkconfig mysql on

[root@192,168,4,5 mysql]# netstat -anptu | grep mysql

tcp        0      0 :::3306                     :::*                        LISTEN      5285/mysqld   

Msyql初始化设置,修改口令

[root@192,168,4,5 mysql]# cat /root/.mysql_secret

# The random password set for the root user at Fri Nov 27 12:37:56 2015 (local time): YQPidyOT

[root@192,168,4,5 /]# mysql -u root -p

Enter password: YQPidyOT

mysql> SET PASSWORD FOR 'root'@'localhost'=PASSWORD('zhang');

SVNManager建立访问用户及数据库

mysql> create database svn;

mysql> grant all on svn.* to svnmanager@localhost identified by "zhang";

mysql> flush privileges;

mysql> quit

4.6 配置svnmanager

svnmanager的配置文件在/var/www/html/svnmanager目录下,有一个config.php.linuxconfig.php.win,分别针对LinuxWindows操做系统下的配置模板。初始化初始用户名称为admin,密码为admin,此时你必须建立一个系统管理员,不然是看不到版本库管理菜单的。建立管理员用户后admin账号失效。

[root@192,168,4,5 /]# cd /var/www/html/svnmanager

[root@192,168,4,5 svnmanager]# mv config.php.linux config.php

[root@192,168,4,5 svnmanager]# vim config.php

<?php

$htpassword_cmd = "/usr/bin/htpasswd";

$svn_cmd = "/usr/bin/svn";

$svnadmin_cmd = "/usr/bin/svnadmin";

$svn_repos_loc = "/home/svn/daluPro";

$svn_passwd_file = "/home/svn/daluPro/conf/passwd";

$svn_access_file = "/home/svn/daluPro/conf/authz";

$svn_trash_loc = "/var/svn/trash";

$svnserve_user_file="/home/svn/daluPro/conf/webpasswd";

$smtp_server = "smtp.mailserver.net";

$dsn = "mysql://svnmanager:zhang@localhost/svn";

$admin_name = "admin";

$admin_temp_password = "admin";

?>

4.7重启mysql,httpd

[root@192,168,4,5 svnmanager]# service httpd restart

[root@192,168,4,5 svnmanager]# service mydql restart

4.8 访问http://192.168.4.5/svnmanager进行测试

使用sdmin登陆后弹出如下画面

点击User Admin

功能项从上到下依次为:邀请用户、管理邀请、增长用户、编辑用户、删除用户

增长用户

1. SVN 的常见操做

1) 签出

#svn checkout URL path

2) 签出指定版本

#svn checkout –r rev URL

3) 签出指定指定日期

#svn checkout –r “{date}” URL

4) 查看工做拷贝从哪里来

#svn info path

5) 更新工做拷贝

#svn update

6) 添加文件到工做拷贝

#svn add path

7) 设置文件或者目录的属性

#svn propset propname propvalue path…

8) 编辑文件或者目录的属性

#svn propedit propname path

9) 列出文件或者目录的属性

#svn proplist path

10) 打印属性的内容

#svn propget propname path

11) 删除属性

#svn propdel propname path

12) 启用文件的关键字展开

#svn propset svn:keywords “keywords” file…

13) 忽略目录中的某些文件

#svn propedit svn:ignore path…

14) 设置文件的行结尾风格

#svn propset svn:eol-style style path…

15) 设置文件的mime-type

#svn propset svn:mime-type mime-type path..

16) 标记文件为可执行文件

#svn propset svn:executable true path…

17) 拷贝文件或者目录

#svn copy source destination

18) 重命名文件或者目录

#svn rename oldname newname

19) 移动文件或者目录

#svn move source destination

20) 查看文件或者目录的差别

#svn diff path

21) 比较文件的两个版本

#svn diff –r rev1:rev2 file

22) 查看文件和项目仓库中最新版本之间的差别

#svn diff –r HEAD file

23) 查看文件的最近的改动

#svn diff –r PREV:BASE file…

24) 提交文件

#svn commit –m “message” file

25) 查看文件的历史

#svn log file

26) 查看目录中最近的活动

#svn log path | more

27) 查看文件的详细历史记录

#svn log –v file…

28) 检查工做拷贝的状态

#svn status

2. 各包说明

Subversion   SVN服务器

Mysql-server    用于codestriker

Httpd mod_dav_svn  mod_perl   用于支持web方式管理snv服务器

Sendmail       用于配置用户提交代码后发邮件提醒

Wget gcc-c++ make unzip  perl*必备软件包

错误总结

1)提示没有php-mbstring

装包的时候发现没有php-mbstring这个包,可是我看到的全部文档都要求有这个包,而且我跳过这个的时候下一步也作不成功,只能找,网上下了个包以后,还有依赖关系,这时候我很崩溃,找不天不能用,最后我把但愿寄托于centos6里边的包,配好yum以后,能够了,成功安装

2)语法错误

这个是由于1014行,“”是汉语下的,应该改成英语下的,配置文件下的引号都应该是英文的。

(3)装包的时候提示有依赖关系

好比在作邮件支持的时候,这个包只能从网上下,仓库里没有,装包的时候提示有依赖,只能按照提示下载每个依赖包并安装。虽然有rpm --force强制安装,但仍是推荐解决全部依赖关系。

(4)SVNManager只有User Admin这一项

状态:未解决

可能缘由分析:

     权限问题:我已经把全部的文件的属主都设为apache,apache应该有权限访问

     数据库问题:查看数据库以后,数据库中确实有组这个表,应该不是数据库问题

     VersionControl包问题:网上下了两本版本,仍是只有一项

相关文章
相关标签/搜索