SubVersion版本控制

源自《Linux 运维之道》丁一明编著 一书的总结

三种访问方式


功能


Apache+DAV


Svnserve


Svnserve+SSH


认证


http基本认证、LDAP


支持md5


Ssh认证


权限


对版本整体设置,也可以指定设置权限


客队版本整体设置权限,也可以指定目录


仅对版本库整体设置权限


加密


支持ssl加密



支持ssh加密


日志


完善的apache日志




速度





设置


相对复杂


简单


相对简单

安装:

[[email protected] tcpcliserv]# yum -y install subversion

创建版本库,利用svnadmin工具

svnadmin:命令create 创建一个新的版本库

hotcopy 版本库热备份

lslocks 打印所有的锁

[[email protected] tcpcliserv]# mkdir /var/svn

[[email protected] tcpcliserv]# svnadmin create /var/svn/web_project

[[email protected] tcpcliserv]# mkdir /var/web_code

[[email protected] tcpcliserv]# touch /var/web_code/test

[[email protected] tcpcliserv]# svn import /var/web_code/ file:///var/svn/web_project/ -m "Initial Data"

Adding /var/web_code/test

Committed revision 1.

[[email protected] tcpcliserv]# svn list file:///var/svn/web_project

test

建立有效的认证机制以增强版本数据库的安全性

[[email protected] tcpcliserv]# vim /var/svn/web_project/conf/authz

[[email protected] tcpcliserv]# vim /var/svn/web_project/conf/passwd

[[email protected] tcpcliserv]# vim /var/svn/web_project/conf/svnserve.conf

[[email protected] tcpcliserv]# svnserve -d -r /var/svn/

其中authz文件,添加内容

[groups]

admins=harry,sally #定义组,组成员有harry和sally

[/] #对版本库根路径设置权限,可以设置为需要控制的路径

@admins=rw #admins组中的用户可读、可写权限

*=r #其他所有的人只读,权限可以设置为’r’只读,读写’rw’、无权限’ ‘

Passwd添加内容

[users]

harry = 123

sally = 123

svnserve.conf添加内容

[general]

anon-access=none

auth-access=write

password-db=passwd

authz-db=authz

real=My First Repository

启动服务器相应的进程

启动svnserve服务

-d 以守护进程方式运行svnserve

--listen-port=port 指定监听的端口,默认监听端口号为3690

-r root 为版本库指定一个虚拟路径,默认客户端要指定绝对路径访问库

[[email protected] tcpcliserv]# svnserve -d -r /var/svn/

Svn服务默认监听端口3690,注意要设置。同时要注意在authz文件中为目录设置权限,路径应该为[web_project:/]。

客户端访问

[email protected]:/home/tempal# svn co svn://192.168.118.253/project1 mine

svn: No repository found in ‘svn://192.168.118.253/project1‘

[email protected]:/home/tempal# svn co svn://192.168.118.253/web_project mine

认证领域: <svn://192.168.118.253:3690> f2093f5e-85b5-4222-ae8e-c7d091ab3536

“root”的密码:

认证领域: <svn://192.168.118.253:3690> f2093f5e-85b5-4222-ae8e-c7d091ab3536

用户名: harry

“harry”的密码:

-----------------------------------------------------------------------

注意! 你的密码,对于认证域:

<svn://192.168.118.253:3690> f2093f5e-85b5-4222-ae8e-c7d091ab3536

只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion

可以保存加密后的密码。请参阅文档以获得详细信息。

你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,

来避免再次出现此警告。

-----------------------------------------------------------------------

保存未加密的密码(yes/no)? yes

A mine/test

取出版本 1。

[email protected]:/home/tempal#

命令:

svn命令:客户端命令行工具

Svnlook命令:subversion检查工具

[[email protected] tcpcliserv]# svnlook author /var/svn/web_project/

Root

Svnserve+SSH服务器。

客户端需要使用ssh程序连接远程服务器的sshd服务,通过ssh认证机制验证账户身份后,再自动启动svnserve服务。所以服务器端不需要提前启动svn服务。

[[email protected] tcpcliserv]# mkdir /var/code2

[[email protected] tcpcliserv]# touch /var/code2/test

[[email protected] tcpcliserv]# svnadmin create /var/svn/web_project2

[[email protected] tcpcliserv]# svn import /var/code2 file://var/svn/web_project2 -m "Web code"

svn: Unable to open an ra_local session to URL

svn: Local URL ‘file://var/svn/web_project2‘ contains unsupported hostname

[[email protected] tcpcliserv]# svn import /var/code2 file:///var/svn/web_project2 -m "Web code"

Adding /var/code2/test

在客户端访问

Committed revision 1.

[[email protected] tcpcliserv]# service sshd start

[[email protected] tcpcliserv]# chkconfig sshd on

Apache+SVN服务器搭建

虽然前面两种服务器已经满足多数人的使用需求,但当客户端没有任何工具可以使用时,我们还可以创建基于Apache的SVN服务器,这样只要客户端有浏览器就可以访问版本库服务器。使用Apache Web Server访问版本库需要加载mod_dav和mod_dav_svn模块。

[[email protected] tcpcliserv]# gedit /etc/httpd/conf.d/subversion.conf

[[email protected] tcpcliserv]# chown -R apache.apache /var/svn

[[email protected] tcpcliserv]# chcon -R -t httpd_sys_content_t /var/svn

[[email protected] tcpcliserv]# htpasswd -c /var/svn/.pass jerry

New password:

Re-type new password:

Adding password for user jerry

[[email protected] tcpcliserv]# service httpd start

Starting httpd: httpd: Could not reliably determine the server‘s fully qualified domain name, using localhost.localdomain for ServerName

[ OK ]

[[email protected] tcpcliserv]# chkconfig httpd on

更改的/etc/httpd/conf.d/subversion.conf 内容如下:为了让Apache Web Server可以读取SVN版本中的数据,要确保mod_dav和mod_authz_svn两个模块会被加载。

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

#添加内容

<Location /svn>

#当用户的URL是以/svn开始(http://hostname/svn/...),Apache会将控制权交给DAV处理

DAV svn

SVNParentPath /var/svn

#通过SVNParentPath指定所有版本库的主目录(发布所有的版本库)

# Limit write permission to list of valid users.

# Require SSL connection for password protection.

# SSLRequireSSL

AuthType Basic #Apache认证方式

AuthName "Authorization Realm"#提示字符

AuthUserFile /var/svn/.pass#账户文件路径,为了安全,应该隐藏该文件

Require valid-user#设置仅为有效用户可以访问

</Location>

#除了上面两个模块,还要确保/etc/httpd/conf/httpd.conf文件中dav_module模块也会被加载

# Example configuration to enable HTTP access for a directory

# containing Subversion repositories, "/var/www/svn". Each repository

# must be both:

#

# a) readable and writable by the ‘apache‘ user, and

#默认Apache的启动用户为apache,所以需要apache用户对版本库有读写权限

# b) labelled with the ‘httpd_sys_content_t‘ context if using

#如果开启了SELinux,这版本库目录需要有httpd_sys_content_t安全上下文标签。

# SELinux

#

#

# To create a new repository "http://localhost/repos/stuff" using

# this configuration, run as root:

#

# # cd /var/www/svn

# # svnadmin create stuff

# # chown -R apache.apache stuff

# # chcon -R -t httpd_sys_content_t stuff

#

#<Location /repos>

# DAV svn

# SVNParentPath /var/www/svn

#

# # Limit write permission to list of valid users.

# <LimitExcept GET PROPFIND OPTIONS REPORT>

# # Require SSL connection for password protection.

# # SSLRequireSSL

#

# AuthType Basic

# AuthName "Authorization Realm"

# AuthUserFile /path/to/passwdfile

# Require valid-user

# </LimitExcept>

#</Location>

SubVersion版本控制

时间: 2024-10-04 17:53:34

SubVersion版本控制的相关文章

linux与 windows环境的Subversion版本控制企业架构搭建之svn协议

1.前言 1.1.需求和目的 公司要求引入版本管理服务器对两大对象进行管理: 1)针对windows环境的开发人员的源代码做版本控制. 2)针对linux服务器的配置文件做版本控制. 本章将使用svn协议的方式完成文件的版本控制. 如果有linux系统建议参阅: http://cmdschool.blog.51cto.com/2420395/1710315 1.2.系统架构模式描述 1)linux的服务器端 服务器端通过ssh协议提供版本控制服务(port:tcp3690) 2)windows的

用 Apache 和 Subversion 搭建安全的版本控制环境

用 Apache 和 Subversion 搭建安全的版本控制环境 作为新一代的开源版本控制工具,Subversion 以其目录版本化.原子提交.版本化的元数据.更加有效的分支和标签等优良特性,正逐渐受到开源软件社区的重视,并有望取代 CVS,成为开源软件开发中版本控制的首选系统.在服务端,Subversion 最大的独特之处,在于它可以通过一个扩展模块与 Apache 的HTTP 服务器相结合,实现很多高级的管理功能和安全特性.与 CVS 相比,Subversion 实现了更加先进和安全的用户

linux安装部署apache+subversion+jsvnadmin

1.apache网页服务器(注意不是tomcat) 2.subversion版本控制(svn服务器) 3.jsvnadmin项目(svn管控台) 以上三个整合,形成svn版本管理的平台 1.安装之前,先更新linux系统 # yum update 需要输入y确认 2.更新完成重启 # reboot  3.安装apache # yum install httpd httpd-devel 安装时需要输入y确认 4.启动服务器 # service httpd start  5.apache设置开机启动

牛x的JavaScript编辑器你知道几个

英文:Martin Heller  译文:葡萄城控件 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入学习交流群343599877,我们一起学前端! 对于JavaScript程序员来说,目前有很多很棒的工具可供选择.本文将会讨论10个优秀的支持JavaScript,HTML5和CSS开发,并且可以使用Markdown进行文档编写的文本编辑器.为什么使用编辑器而不是IDE进行JavaScript编程?原因就是速度快. 编辑器和IDE之间的本质区别在于:IDE不但可以调试,并且可以对代码进行概

实战1 svn安装配置

大纲 一.subversion概述 二.subversion系统逻辑架构图 三.svn的安装配置 #svn的安装 ##svn的启动 ###测试svn服务 ####一下没有看懂什么用? #####关于subversion组件 四.客户端安装与测试 --------------------- 一.subversion概述 Subversion(SVN)是一个开源的,跨平台的版本控制系统,由CollabNet公司成立于2000年: Subversion作为新一代的版本管理系统,以其目录版本化.原子提交

构建企业代码管理系统之SVN服务(基础篇)

一.What's is a subversion Subversion(SVN)是一个开源的,跨平台的版本控制系统,由CollabNet公司成立于2000年:Subversion作为新一代的版本管理系统,以其目录版本化.原子提交.版本化的元数据.更加有效的分支和标签等特性,至今已被众多的互联网企业使用来管理网站.论坛的代码文件:Subversion最独特的地方,便是可以通过Apache的扩展模块与Apache的HTTP服务相结合,实现更安全的特性与管理,其次用户还可以通过HTTP协议去访问版本库

linux试题 (五)

唉,堕落了几天,我又变好了.傻逼技术面试官才会考运维人员程序的问题!运维人员多累啊,数据库,安全.linux服务.网络管理,忙的过来吗?还拿程序为难人!笔试多半挂了,大公司离我又远了,哎... linux面试(五) 201   Shell循环语句有哪些? 答:for do done ;if then fi ;case 语句.while do done.until 202 用SHELL模拟LVS,脚本怎么写 答:步骤有点长,推荐购买<构建高可用linux服务器>-余洪春,这本书写的很详细 203

SVN 分支管理

平时在工作中使用 SVN 只是限于 commit,update 这样的操作,没有用过分支管理.开发过程中一般都是一个功能开发完成之后整体进行提交,而最近在项目中有一个比较大并且开发周期比较长的功能,所以在功能没有完成之前不方便进行提交,所以想到了使用分支管理,边学边用(所以工作最好一定要选开发流程规范的公司). /*环境: * 服务器操作系统 - CentOS 6.6 * SVN 服务器 - Subversion 1.6.11 * 客户端操作系统 - Windows 10 64位 * SVN 客

SVN部署(一)

一.什么是SVN(Subversion) svn是一个跨平台的开源版本控制系统,Subversion管理着随时间改变的数据,这些数据放置在一个中央资料档案库(repository).这个档案库很像一个普通文件服务器,不过它会记住每一次文件的变动,这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历史 svn是一个通用软件系统,它不但可以用来管理程序源码,也可以管理任何类型的文件,如文本,视频,图片 svn的服务器常见有3种运行访问方式 1.独立服务器(例如:svn://svn.etian.or