本文主要讲解Linux搭建SVN服务器,希望对大家的学习有所帮助。 因为现在在公司用到这个svn高大上工具,很方便管理一个部门所有人统一查看文件和共享,可以在线更新文档上.所以在这里我就很详细给大家操作搭建下服务以及使用。
1、什么是SVN(subversion)
什么是svn呢?简单的说,您可以把svn当作你的备份服务器,更好的是,他可以帮助您记住你共享文件和创建文件每次上传到这个服务器的档案内容。并且自动的赋予每次的变更一个版本。
2、为什么要用SVN
(1). 备份工作档案的重要性,你永远不知道自己的计算机的硬盘何时会坏掉,如果你负责一个公司的整理运维,你应该很多公司内部资料和工作文件,根据经验法在加上墨菲定律,坏事情往往都发生在最关键也是最重要的时刻。例如:你要release 东西的时候前一刻,硬盘完全坏掉了,无法修复,所以常常备份工作数据是非常重要的。因为我现在在的公司也有这个专门备份机制,甚至异地备援,比放在自己的计算机上面,或者随身携带的U盘上面安全。
(2). 版本控管的重要性。您无法保证手头上最新版本永远都是对的。很多时候,在经过数天努力工作后,您才发现走错方向。需要将所有的修改回复到数天前版本。没有几个人能够完全记住自己修改过什么东西。如果没有做好版本控管,那么,最差的状况就是要全部重来。
(3). 伙伴间的数据同步的重要性。 很多时候,除了您个人外,还有其它的伙伴也需要您的工作和学习档案。怎么把最新的档案提供给伙伴呢?用e-mail?根据经验,用e-mail是一个很差的办法。到了最后,根本就不知道哪一封e-mail才是新的。因为可能您最新的e-mail已经被当成垃圾信给丢了。别忘了,现在很多e-mail软件都有anti-spam(反垃圾邮件)的功能,说不定这些信件都被当成广告信给处理掉了。而且,您也应该知道一般档案如果放在e-mail内,档案大小会变得比较大(通常是原来的4/3倍以上)。如果每天更新一次,恐怕几天没收信的话,信箱就爆了!
(4). SVN有很棒的版本控管机制。所有上传的版本都会帮您记录下来。日后您可以随时取得某一个时刻的版本。而且,也有版本分支及合并等好用的功能。
SVN可以让不同的开发者存取同样的档案,并且利用SVN Server作为档案同步的机制。也就是说,您有档案更新时,无须将档案寄给您的开发成员。只需要告诉他新的版本已经在SVN Server上面,请他自己去SVN Server上面就可以取得最新版本。而且,SVN Server也可以做到当您上传新版本后,自动发信给相关的成员。
SVN的存放档案方式是采用差异备份的方式。也就是说,他只会备份有不同的地方。所以很省硬盘空间。此外,他也可以针对所谓的非文字文件进行差异备份.
------------------------------------------------------------------------------------------
好啦,上面讲的都是svn概念和为什么使用svn,下面我们开始搭建。
我这里用的是centos 6.5 (7.1)我现在也搭建过,也可以的,没有版本要求,都可以实现,
这里有两种安装方式。
svn服务端安装:
1. 安装svn下载地址
官网下载:http://subversion.apache.org/packages.html
SVN客户端:TortoiseSVN,官网下载:http://tortoisesvn.net/downloads.html
2. yum 安装也可以的 (subversion)
yum install -y subversion 这里安装可以看到 如下图:
3. 输入rpm -ql subversion查看安装位置,如下图:
我们知道svn在bin目录下生成了几个二进制文件。
4.创建svn版本库目录
mkdir -p /var/svn/svnrepos
5.创建svn版本库
svnadmin create /var/svn/svnrepos //这里的文件目录自己随便设置
执行了这个命令之后会在/var/svn/svnrepos目录下生成如下这些文件,如图可以看到:
6.进入conf目录(该svn版本库配置文件)
authz文件是权限控制文件
passwd 是帐号密码文件
svnserve.conf SVN服务配置文件
7.进入conf目录下面该svn版本配置文件
authz 文件是权限控制文件
passwd 是帐号密码文件
svnserve.conf svn服务器配置文件
8. 这里我做第一步设置账号,
vim passwd
可以看到如图
这里我在users 下面设置了个账号 和密码 格式:账号=密码 这里的密码是明文的。
9. 设置权限
vi authz
在末尾添加如下命令代码:
[/]
cheng=rw
w=r
意思是版本库的根目录dan对其有读写权限,w只有读权限。
这里*=rw的话 SVN客户端解决authorization failed问题。
10. 修改svnserve.conf文件
vim svnserve.conf
打开下面的几个注释:
anon-access = read #匿名用户可读
auth-access = write #授权用户可写
password-db = passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
realm = /var/svn/svnrepos # 认证空间名,版本库所在目录
ps:很多同学会弄错一个东西, 修改svnserve.conf 文件时。解开注释时要注意,同时要删除#后面的空格。也就是说要全部顶置。
然后认证失败是要注意前面的[/]. 然后重启下SVN就好了 ,不会重启的 reboot吧
11.这里安装配置好启动svn版本库就行了。
svnserve -d -r /var/svn/svnrepos
注意:不要使用系统提供的 /etc/init.d/svnserve start 来启动,因为系统默认的启动脚本中没有使用 �r /svn/project参数指定一个资源。这种情况下启动的svn服务,客户端连接会提示“svn: No repository found in 'svn://192.168.11.229/project' ”这样的错误。
如果已经有svn在运行,可以换一个端口运行
svnserve -d -r /var/svn/svnrepos --listen-port 3391 #这里一般都是默认3390
这样同一台服务器可以运行多个svnserver
或用下�的命令�死�程
netstat -ntlp
kill -9 id 可以了
客户端使用:
客户端用svn或者windows下的TortoiseSVN客户端
这里我已经下载好的,你们可以用我这个,或者去官方网站下载。
百度云: http://pan.baidu.com/s/1hqHGiLA
10、在windows上测试
新建一个测试文件夹,在该文件夹下右键选择 SVN checkout如下图(要事先安装TortoiseSVN):
填写SVN的地址,如下图:
输入密码,如下图:
这里说明一点:
linux svn服务器上的文件保存在哪?
svn有两种存储方式:BDB和FSFS,目前用的最多的是FSFS方式,这种方式的话,一般是存储在\db\revs文件夹下,里面有一堆以版本号命名的文件,如:0、1、2、3、4......,那个就是了例如:/var/svn/svnrepos/db/revs/var/svn/svnrepos/是svn版本库目录db/revs/存储的svn上传文件等的目录[root@master revs]# pwd
/var/svn/svnrepos/db/revs[root@master revs]# ll总用量 4
drwxr-sr-x. 2 root root 4096 11月 5 14:43 0
[root@master 0]# pwd
/var/svn/svnrepos/db/revs/00是第0个版本的目录
[root@master 0]# ll
总用量 5128
-rw-r--r--. 1 root root 115 11月 4 17:22 0
-rw-r--r--. 1 root root 284 11月 5 13:28 1
-rw-r--r--. 1 root root 620 11月 5 13:30 2
-rw-r--r--. 1 root root 5228784 11月 5 14:04 3
-rw-r--r--. 1 root root 1451 11月 5 14:42 4