文章浏览 复制本页面地址

Linux 搭建SVN版本控制器总结

         各位,读者今天在发点自己的一点小总结给大家阅读,写的如有不好之处还请指正,在搭建svn的时候,也从网上查询了很多的文章进行,但是看后多少有些不尽自己的意愿,我把我的想法和搭建过程跟大家分享一下。

          起因: 公司的项目处理的人越来越多,难免会出现更改冲突,而且有覆盖错误的情况。所以要用SVN来安装版本管理,可以方便大家进行按照版本还原。

只是管理我觉得还达不到我的需求,本来公司的项目也不是一个,很多项目,所以要配置不同的版本库,管理不同文件,而且不同密码,这样才能有点流程化,规范化。

            我在/www/web/ 下面  有  system   和     teacher    两个 项目 , 那么我服务器配置版本库的时候  我想 把  /www/svndatehouse 下面 配置 管system 和 teacher 这两个项目的对应的svn 版本库,好 下面来演示一下。

             SVN 是个独立的项目管理工具,跟大家之前安装的环境没有关系,很多人 之前是 用YUM 安装的环境 ,  后来很多人 喜欢集成包  WDCP 但是这些都不受影响。

***********************************安装开始******************************************

基本步骤:
1、安装必需的subversion
2、创建版本库
3、配置用户和权限
4、钩子和svn常用命令说明

[root@localhost ~]# mkdir -p /www/svndatehouse/system

[root@localhost ~]# svnadmin create /www/svndatehouse/system

三、版本库管理配置
进行刚才创建的版本库目录下的conf目录,可以看到有三个文件。

[root@localhost ~]# cd /www/svndatehouse/system/conf
[root@localhost conf]# ls
authz  passwd  svnserve.conf
svnserve.conf    # 这个是版本库的配置文件
passwd                   #这个是记录用户帐号密码的文件
authz                       #这个则是记录组、权限和身份验证的文件

1、配置svnserve.conf文件  把下面几项签名的注释去掉,顶头写

[root@localhost conf]# vi svnserve.conf
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz

2、配置passwd

vi passwd

[users]
# harry = harryssecret
# sally = sallyssecret
system = system123     # 这里是我配置 system 这个版本库的  用户名 =  密码

3、authz文件的配置

[root@localhost conf]# vi authz

[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe,system   #这里虽然注释了  但是我还是先加上,便于日后用

# [/foo/bar]
# harry = rw
# &joe = r
# * =

# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
[/]                                  #配置为访问相对根目录
system = rw              #给这个用户设置读写权限

这样svn版本库就算配置完成了。

启动SVN   svnserve -d -r /www/svndatehouse/

但是,我们通过客户端上传的文件其实是提交到版本库里面的,我想让从本地提交的时候就能直接把文件给提交到我的项目目录里面去,这样就用到了 钩子文件,下面我们来配置一下。

2、钩子自动更新
说明,在开发时经常需要提交代码,如果使用钩子自动更新的话,只要有人提交后就能自动更新到服务器上,非常方便哦。
首先必须对代码目录checkout

[root@localhost ~]# cd  /www/web/system/

[root@localhost www]# svn checkout svn://192.168.1.134/system/

Authentication realm:  21d46c22-96a8-465b-9d0b-58a1e04abdfd
Password for 'root':
Authentication realm:  21d46c22-96a8-465b-9d0b-58a1e04abdfd
Username: system
Password for 'system': system123
Checked out revision 0.

到这里我们密码验证也通过了。

svn   import  -m  "system"   /www/web/linewowsystem/public_html    file:///www/svndatehouse/system    #把项目导入到版本库

记下来配置钩子文件:

[root@localhost ~]# cd /www/svndatehouse/system/hooks/

[root@localhost hooks]# cp post-commit.tmpl  post-commit
[root@localhost hooks]# vim post-commit

export LANG="zh_CN.UTF-8"
SVN=/usr/bin/svn
TODIR=/www/web/system/public_html
$SVN update --username system --password system123 $TODIR
或者:

export LANG="zh_CN.UTF-8"
SVN=/usr/bin/svn
TODIR=/www/web/linewowsystem/public_html
$SVN checkout file:///www/svndatehouse/system/ /www/web/linewowsystem/public_html
保存后,给钩子文件赋予可执行权限

[root@localhost hooks]# chmod +x post-commit

这样当用户提交文件的第时候,svn将会自动执行更新,使代码同步。

我们把项目目录和版本库进行做一下关联,这样可以项目目录的文件在版本库下面留下连接

好了,到这里我们就大工告成了。

设置开机自启动

[root@localhost ~]# vi /etc/rc.d/rc.local

touch /var/lock/subsys/local
/usr/bin/svnserve -d -r /www/svndatehouse/

到这里我们也算告一段落了,我们怎么来应用上咱们配置的这个版本库:

########################常用工具命令开始##############################
提醒: 如果用客户端工具提交的时候,[错误输出不能从本地区域转变为 UTF-8。]  这样你就把 已有的项目工程重新命名一下,让他提交的时候,通过钩子
把版本库里面的 全部生成一份即可
svn list file:///www/svndatehouse/system    列出版本库文件

svn://192.168.1.134/system   客户端连接地址

 

额外借鉴命令:

1.获取到仓库地址
[root@localhost mnt]#
svn checkout file:///www/svndatehouse/system/ /www/web/linewowsystem/public_html
 
2.添加文件到svn服务器
[root@localhost mnt]# svn add 1.php

 
3.查看服务器状态
[root@localhost mnt]# svn status

 
4.提交数据
[root@localhost mnt]# svn commit -m "this is test"

5.更新项目
[root@localhost mnt]# svn update

 
6.返回到指定的版本
[root@localhost mnt]# svn update -r 2
 
7.显示所有文件
[root@localhost htdocs]# svn list
 
8.删除1.php
[root@localhost htdocs]# svn delete 1.php
[root@localhost htdocs]# svn update
版本24。
[root@localhost htdocs]# svn commit -m ""

9.备份
[root@localhost htdocs]# svnadmin dump /www/svndatehouse/systeacher /mnt/systeacher.2012.06.02

10.用命令查看开什么端口 netstat -tunl 或 netstat -antopl | grep svn

11.关闭SVN 服务器
# killall svnserve
# ps aux | grep svnserve    查看服务,端口:3690
# ps -ef|grep svn

12. svnlook uuid /www/svndatehosuse/system/   查看版本库ID

13. 提示版本库ID与期望不匹配  可以  修改

svnadmin setuuid www/svndatehosuse/system  要修改的ID

########################常用工具命令结束##############################

标签:
上一篇:
下一篇: