SVN版本控制服务器的配置和使用

来源:互联网 发布:诺基亚e63软件下载网站 编辑:程序博客网 时间:2024/05/19 04:27

  1.         SVN简介

“即使你的团队只有你一个人,你的项目只需一周的时间;即使那是'用过就扔'的原型;即使你的工作并非源码;确保每样东西都处在源码控制之下--文档、电话号码表、给供应商的备忘录、makefile、构建与发布流程、烧制CD 的shell 脚本--每样东西。”(《程序员修练之道》)。
对于每一个程序员来讲,怎样能够最好的保护你的源代码都是最重要的一件事。一个源码控制软件就相当于一个系统级的Undo 键,当你的程序可用时,作一个标记,当程序被改的体无完肤不能运行了,你可以方便的回到上一个可用的版本,或者当你发现自己想找回上周被你删除的一个函数的时候,你可以很容易的做到这一点。
当然,好的版本控制并不止于此。对于团队开发来讲,你可以控制每个人的分工和权限。两个人可以同时编辑同一份源代码,由程序来提醒两次修改中存在的冲突。你可以查看某一处改动是谁做的。当你发布了一个正式版,可以建立一个分支,在分支上继续开发下一个版本,而对于后来发现的Bug,可以在主分支上继续改进,如果分支上同样存在这个Bug,可以将两者合并。只要修复一次就可以。
目前业界流行的版本控制系统有很多,商业软件比如ClearCase,配置复杂,功能强大,价格昂贵。而Visual Studio 自带的SourceSafe 与它的开发工具完美整合,使用方便,但是对于其它语言和工具的支持就差一些了。开源世界最著名的版本控制软件是CVS,相当一部分的开源软件都在使用这个软件,以供全球的程序员协作开发。然而,CVS 有一些与生俱来的缺点,在设计之初没有考虑到,而随着使用量和使用状况的大增,慢慢显露了出来,比如,最重要的一点,它不支持文件改名,还有,只对文件控制版本,没有目录的管理,等等。
SubVersion 的运行分为两种情况,一种是作为独立的服务器,默认使用3690 端口,像CVS 那样来运行,支持直接连接或者SSL 连接。另一种是借助Apache2 的webdav 功能,直接挂接在apache 上,作为它的一个模块来运行。
这两种配置方式是各有优缺点的。首先,当svn 独立运行的时候,作为一个轻型的服务器,反应速度和连接速度都要比apache 要快一些。它有自己的用户认证方式,(使用系统中现有的帐号),它比apache 更容易配置和使用。当用户以自己的身份登录以后所做的任何操作将被记录下用户名。
后来,CVS 的主要作者(Fogel 等等)在他们现任公司的资助下开发了SubVersion,用以替代CVS。SubVersion 的设计目的就是针对CVS 的一些弱点进行改进。目前已经有几个知名的开源项目从CVS 转向了SubVersion 来保存源代码。SubVersion 目前发布了1.1 正式版,已经相当稳定可靠了。本文只是对SubVersion 安装和使用入门的一点引导,以便从未用过版本控制的程序员可以快速上手,先从保护你的个人代码开始。
 
2.         下载和环境
服务器环境:Linux Redhat AS4 Update 5
SVN服务器下载地址http://subversion.tigris.org/
SVN客户端下载地址http://tortoisesvn.net/downloads
 
3.        安装和配置
vi /home/svnroot/conf/svnserve.conf
修改svnserve.conf
最终该文件如下:
[general]
anon-access = read
auth-access = write
password-db = passwd
上面的意思是可以匿名读,但写入必须要有权限,权限配置在passwd文件中
 vi /home/ svnroot /conf/passwd
修改/建立passwd文件
最终该文件如下:
[users]
weip=123
 
4.         SVN的基本操作
1)        启用svn 服务器:只要在命令行上运行svnserve -d 即可
2)        导入项目:转到你的项目所在的目录,执行下面命令来提交整个项目,其中[.]表示当前目录,你也可以指定项目的绝对路径。
svn import . svn://localhost/project1 -m "initial import" --username liudong --password liudong123
3)        检出项目:为了验证刚才导入的项目,我们转到一个新的目录下,执行以下命令就可以在当前目录下生成一个project1的项目目录,目录中的内容就是我们刚才所提交的所有文件。
svn checkout svn://localhost/project1 --username liudong -password liudong123
4)        提交修改后的文件:修改项目中的任何一个文件,使用命令来提交所作的修改:
svn commit ReadMe.txt -m "modified" --username liudong -password liudong123
5)        获取最新的版本:当项目组的其他成员修改并提交了某个文件,你可以通过下面命令来获取到该文件的最新的版本:
svn update -r HEAD ReadMe.txt --username liudong -password liudong123