最近一直在发现自己的很多知识盲点 ^_^ ,其中之一就是cvs或者svn的知识。这个是多人工作的有效方式,曾经一次是处理后台程序的时候,两个人都不知道是什么情况下修改的,所以,如果有一个版本控制的软件,那其实非常棒,也知道每次修改是出于什么原因。

先解读一下基础知识然后再继续笔记内容:

1 什么是版本控制?

参考一下《Subversion 简介》:

引用
版本控制之于程序员,就好比安全网之于高空秋千表演者。知道安全网就在那里,万一自己摔落它能够提供保护,高空秋千表演者才能放心大胆地在空中飞跃。同样,版本控制使您有能力去冒以往想都不敢想的风险。如果哪儿出了错,您总是可以使自己的代码回复到一个已知的、工作正常的版本。您可以在不触及主干的分支中进行试验,而不会影响到其他小组成员。在已经发布的产品的较老版本中发现 bug 时,您可以轻松检出特定版本,以确认、修订,并生成该 bug 的修补程序。如果没有版本控制,您必须极为慎之又慎,缓慢地推进,总而言之,生产力会更低。

Subversion 是一种开放源码的全新版本控制系统,支持可在本地访问或通过网络访问的数据库和文件系统存储库。不但提供了常见的比较、修补、标记、提交、回复和分支功能性,Subversion 还增加了追踪移动和删除的能力。此外,它支持非 ASCII 文本和二进制数据,所有这一切都使 Subversion 不仅对传统的编程任务非常有用,同时也适于 Web 开发、图书创作和其他在传统方式下未采纳版本控制功能的领域。


2 版本控制流程是怎么样的?

版本控制一般是本机客户端从服务器上更新得到最新的一份文件,然后修改具体的文件,再更新到服务器,服务器管理好每个更新。如果文件同时分配到两个客户端,两个客户端提交更改,那只有一个可以更新,另外一个只能从新的版本修改提交更新,或者返回两个版本的文件,给你参考。

Subversion 可以使用基于http协议的WebDAV/DeltaV协议进行网络通讯,并由Apache服务器提供源码仓库方的网络浏览服务。这为 Subversion提供了比CVS更好的协同工作能力,并提供了各式各样的自由的关键特性:授权,基于路径的授权,线性压缩,以及基本源码仓库浏览。

3 如何重新编译软件?

首先是apache的配置,如果现有apache了,那就可以考虑更新了,但是问题来了,不能影响现有服务怎么办?我以前一头雾水,担心操作失误。那其实要添加模块文件的编译方法已经实践过了,见《如何向已经安装好的apache添加一个模块

还有一个方法给已经编译的软件做修改,configure程序的参数是会被记录起来,放置到同目录的config.nice文件中,我是从apache的文档里面发现的:

引用
小幅度的版本升级(例如:2.2.55→2.2.57)很容易。make install 的过程不会改写任何已经存在的文档、日志、配置文件。此外,开发者也会尽量兼容上一版本的configure选项、运行时配置、模块API 。大多数情况下,你将能够使用与上一版本完全相同的configure命令行和运行时配置,而你原来的所有模块也将正常工作。

如果你保存了上一次安装后build子目录中的config.nice文件,升级将更加平滑。这个文件精确地保存了所有对目录树进行配置的configure命令行。你只需要将config.nice文件复制到新的源代码目录树的根文件夹并进行你希望的修改后。。。。。


所以,直接从文件里面就可以知道上次的参数,这样就不用担心重新编译会把某些功能丢失了,但至少你保留了源文件的情况哦。

4 如何配置apache和subversion?

人都是学习知道的,我参考了一下别人的方法,发现这篇文章不错:《SVN服务器搭建完全手册》,这个是看了很多文章知道的,因为我按照别的安装过程碰到问题在这里似乎都想到了。

阿权的服务器没有什么特别的,所以简单来讲,需要两个内容:
1 apache需要支持so,同时加载相应的svn模块
2 安装subversion时才会生成该模块,同时自动添加到apache的配置里,需要声明apr等的路径,否则不正常

apache的配置:

./configure --enable-dav --enable-so --enable-maintainer-mode
这个是subversion的INSTALL文件说明的参数,这个是跟subversion有关的,dav是验证模块,另外一个可以参考apache的手册,自行选择了:

引用
--enable-maintainer-mode
使用所有警告和调试符号编译源代码,请勿用于正式服务器,它会影响性能。


     LoadModule dav_module         modules/mod_dav.so
     LoadModule dav_fs_module      modules/mod_dav_fs.so


上面是dav产生的两个模块,其实如果已经有这两个模块加载了,就不用重新编译apache,怎么看呢?phpinfo也可以简单的知道,有一个栏目是“apache2handler”,显示 Loaded Modules ,有这些模块就可以免得重新编译了。

subversion的安装:

./configure --with-apxs=/usr/local/apache2/bin/apxs \
--with-apr=/home/src/server/httpd-2.2.2/srclib/apr \
--with-apr-util=/home/src/server/httpd-2.2.2/srclib/apr-util

这个是一个参考的参数,后面两个要添加,是指向apache源文件的目录的相关文件,如果没有指定,就会出现这样的错误:

引用
–with-apr 和 –with-apr-util 如果没有加上的话,即使编译成功了也会出现
Can’t set position pointer in file ‘/home/svn/repos/db/revs/0′: Invalid argument


阿权也碰到这样的问题,所以大家可以放心的这样做了。

5 如何开始简单的使用?

简单的使用可以参考更多的教程了,不细说了。
1 服务器上创建新项目
# su daemon #(apache是以daemon用户运行的,所以要切换身份,否则可能会报目录访问权限错误)
# svnadmin create --fs-type fsfs /home/svn/Lair
(如果用别的用户创建的项目,懒人可以把文件都改777 ^_^ )

2 给apache添加应用

<VirtualHost *:80>
   DocumentRoot "/Data/webapps/default"
   ServerName www.aslibra.com
 <Location /svn/Lair>
   DAV svn
   SVNPath /svn/Lair
   AuthType Basic
   AuthName "Subversion repository"
   AuthUserFile /etc/svn-auth-file
   Require valid-user
 </Location>
</VirtualHost>


3 新建和修改授权文件
htpasswd -c /etc/svn-auth-file aslibra
输入密码就可以了,另外,root创建的这个文件,默认组和其他都无法读取的,所以需要修改权限哦

4 重启apache后就可以访问了
http://www.aslibra.com/svn/Lair

简单就介绍到这里,本笔记也算至少可以把环境处理完毕,剩下是怎么利用好svn的问题了,以后再说。


原创内容如转载请注明:来自 阿权的书房
收藏本文到网摘
Tags: , ,
发表评论
AD
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML 打开UBB 打开表情 隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写
 

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐