Linux 搭建SVN 服务器Word文档下载推荐.docx
《Linux 搭建SVN 服务器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Linux 搭建SVN 服务器Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。
作出自己的修改并调试成功
-->
Commit(大家就可以看到你的修改了)
。
如果两个程序员同时修改了同一个文件呢,
SVN可以合并这两个程序员的改动,实际上SVN管理源代码是以行为单位的,就是说两个程序员只要不是修改了同一行程序,SVN都会自动合并两种修改。
如果是同一行,SVN会提示文件Confict,
冲突,需要手动确认。
客户端软件:
(1)Windows下常用的客户端软件常用TortoiseSVN。
它是一个免费的开源的客户端。
下载地址:
(2)向Myeclipse,也有一些SVN的插件。
Subversion提供以下主要功能:
(1)目录版本控制
CVS
只能跟踪单个文件的历史,
不过
实作了一个
“虚拟”
的版本控管文件系统,
能够依时间跟踪整个目录的变动。
目录和文件都能进行版本控制。
(2)真实的版本历史
自从CVS限制了文件的版本记录,CVS并不支持那些可能发生在文件上,但会影响所在目录内容的操作,如同复制和重命名。
除此之外,在CVS里你不能用拥有同样名字但是没有继承老版本历史或者根本没有关系的文件替换一个已经纳入系统的文件。
在Subversion中,你可以增加(add)、删除(delete)、复制(copy)和重命名(rename),无论是文件还是目录。
所有的新加的文件都从一个新的、干净的版本开始。
(3)自动提交
一个提交动作,不是全部更新到了档案库中,就是完全不更新。
这允许开发人员以逻辑区间建立并提交变动,以防止当部分提交成功时出现的问题。
(4)纳入版本控管的元数据
每一个文件与目录都附有一組属性关键字并和属性值相关联。
你可以创建,
并儲存任何你想要的Key/Value对。
属性是随着时间来作版本控管的,
就像文件內容一样。
(5)选择不同的网络层
有抽象的档案库存取概念,
可以让人很容易地实作新的网络机制。
可以作为一个扩展模块嵌入到ApacheHTTP
服务器中。
这个为Subversion提供了非常先进的稳定性和协同工作能力,除此之外还提供了许多重要功能:
举例来说,
有身份认证,
授权,
在线压缩,
以及文件库浏览等等。
还有一个轻量级的独立Subversion服务器,
使用的是自定义的通信协议,
可以很容易地通过
ssh
以
tunnel
方式使用。
(6)一致的数据处理方式
使用二进制差异算法来异表示文件的差异,
它对文字(人类可理解的)与二进制文件(人类无法理解的)
两类的文件都一视同仁。
这两类的文件都同样地以压缩形式储存在档案库中,
而且文件差异是以两个方向在网络上传输的。
(7)有效的分支(branch)与标签(tag)
在分支与标签上的消耗并不必一定要与项目大小成正比。
建立分支与标签的方法,
就只是复制该项目,
使用的方法就类似于硬连接(hard-link)。
所以这些操作只会花费很小,
而且是固定的时间。
(8)Hackability
Subversion没有任何的历史包袱;
它主要是一群共用的
C
程序库,
具有定义完善的API。
这使得
便于维护,
并且可被其它应用程序与程序语言使用。
二.
SVN
服务器搭建
2.1
使用yum
安装SVN包
关于YUM
服务器的配置参考:
Linux
搭建
YUM
服务器
[root@singledb~]#yuminstall-ysubversion
Loadedplugins:
rhnplugin,security
ThissystemisnotregisteredwithRHN.
RHNsupportwillbedisabled.
SettingupInstallProcess
ResolvingDependencies
Runningtransactioncheck
--->
Packagesubversion.i3860:
1.4.2-4.el5_3.1settobeupdated
FinishedDependencyResolution
DependenciesResolved
====================================================================================================
Package
Arch
Version
Repository
Size
Installing:
subversion
i386
1.4.2-4.el5_3.1
rhel-base
2.3M
TransactionSummary
Install
1Package(s)
Update
0Package(s)
Remove
Totaldownloadsize:
2.3M
DownloadingPackages:
subversion-1.4.2-4.el5_3.1.i386.rpm
|2.3MB
00:
00
Runningrpm_check_debug
RunningTransactionTest
FinishedTransactionTest
TransactionTestSucceeded
RunningTransaction
Installing
subversion
1/1
Installed:
subversion.i3860:
Complete!
[root@singledb~]#
验证安装版本:
[root@singledb~]#
svnserve--version
svnserve,version1.4.2(r22196)
compiledAug
52009,19:
03:
56
Copyright(C)2000-2006CollabNet.
Subversionisopensourcesoftware,seehttp:
//subversion.tigris.org/
ThisproductincludessoftwaredevelopedbyCollabNet(http:
//www.Collab.Net/).
Thefollowingrepositoryback-end(FS)modulesareavailable:
*fs_base:
ModuleforworkingwithaBerkeleyDBrepository.
*fs_fs:
Moduleforworkingwithaplainfile(FSFS)repository.
2.2
创建SVN
版本库
[root@singledb~]#mkdir/u02/svn
[root@singledb~]#svnadmincreate/u02/svn/davesvn
--davesvn为版本库名称
2.3
配置
创建版本库后,在这个目录下会生成3个配置文件:
[root@singledbconf]#pwd
/u02/svn/davesvn/conf
[root@singledbconf]#ls
authz
passwd
svnserve.conf
(1)svnserve.conf:
svn服务配置文件下。
(2)passwd:
用户名口令文件。
(3)authz:
权限配置文件。
svnserve.conf
文件,
该文件配置项分为以下5项:
anon-access:
控制非鉴权用户访问版本库的权限。
auth-access:
控制鉴权用户访问版本库的权限。
password-db:
指定用户名口令文件名。
authz-db:
指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。
realm:
指定版本库的认证域,即在登录时提示的认证域名称。
若两个版本库的认证域相同,建议使用相同的用户名口令数据文件
Passwd
文件
:
我们在svnserve.conf文件里启用这个文件。
然后配置如下:
[root@singledbconf]#catpasswd
###Thisfileisanexamplepasswordfileforsvnserve.
###Itsformatissimilartothatofsvnserve.conf.Asshowninthe
###examplebelowitcontainsonesectionlabelled[users].
###Thenameandpasswordforeachuserfollow,oneaccountperline.
[users]
#harry=harryssecret
#sally=sallyssecret
dave=davepwd
tianlesoftware=tianlesoftwarepwd
在网上找到一个很好的配置例子:
[groups]
admin=john,kate
devteam1=john,rachel,sally
devteam2=kate,peter,mark
docs=bob,jane,mike
training=zak
--这里把不同用户放到不同的组里面,下面在设置目录访问权限的时候,用目录来操作就可以了。
#
为所有库指定默认访问规则
所有人可以读,管理员可以写,危险分子没有任何权限
[/]
--对应我测试里的:
/u02/svn
目录
*=r
@admin=rw
dangerman=
允许开发人员可以完全访问他们的项目版本库
[proj1:
/]
@devteam1=rw
[proj2:
@devteam2=rw
[bigproj:
trevor=rw
文档编写人员对所有的docs目录有写权限
[/trunk/doc]
@docs=rw
培训人员可以完全访问培训版本库
[TrainingRepos:
@training=rw
下面我们来配置我们的authz文件:
[root@singledbconf]#catauthz
admin=dave
dev=tianlesoftware
[davesvn:
@dev=rw
[root@singledbconf]#
2.4
启动和停止SVN服务
(1)启动SVN服务:
[root@singledbconf]#
svnserve-d-r/u02/svn
-d表示后台运行
-r
指定根目录是
/u02/svn
ps-ef|grepsvn
root
4592
1
018:
04?
00svnserve-d-r/u02/svn
4594
3709
04pts/1
00grepsvn
(2)停止SVN服务:
ps-aux|grepsvn
kill-9
进程杀掉
三.
客户端连接SVN
3.1
安装TortoiseSVN
客户端
下载地址在第一节已说明。
3.2
找到自己项目的目录,右击,进行SVN
操作
(1)新建测试目录svn,进入后右键,点checkout:
服务器的IP地址和版本库名称。
新建个文件svn.txt.把这个文件上传到SVN服务器(add):