转载自 http://gavinshaw.blog.51cto.com/385947/277489
虽然说是SVN系列,但是想要真正的理解一个前人花费多年时间去做的一个工程,并不是短时间之内可以做到的!还有就是看别人的文章 终究不及自己做一遍来的深刻,
另外要说的一点就是,人们写的文章只能作为参考,权威的,还是官方的文档.(一点写在前面的废话!)
当然了了解一个事物,最好的莫过于搞一个来自己动手摸索.就像是当初接触linux的时候一样,让我看了半天的那一大堆命令,还不如在自己的机器上敲个十遍!(当然说的只是初步的接触,深入的了解 看文档还是必须的!)
扯淡多了会上瘾,为了不上瘾,开始吧!
准备工作:
一套操作系统(linux) 连接的网络 (没有的话下载的软件包(源码包,rpm包,)也成),源码的下载地址.
在这里插一句话,关于编译安装和rpm软件包安装,个人觉得如果没有什么特殊需求的话,没有必要自己编译安装,既耗时间又耗费精力,编译完了时间一久,自己都不知道放哪边去了.
所以我选择最简单,也是比较规范的一种安装方式 yum安装(redhat系列).
[root@server ~]# yum install -y subversion-*
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile c5-media | 2.1 kB 00:00 Setting up Install Process Package subversion-1.4.2-4.el5_3.1.i386 already installed and latest version Resolving Dependencies There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them. The program yum-complete-transaction is found in the yum-utils package. . . . Dependencies Resolved
================================================================================
Package Arch Version Repository Size ================================================================================ Installing: subversion-devel i386 1.4.2-4.el5_3.1 c5-media 199 k subversion-javahl i386 1.4.2-4.el5_3.1 c5-media 124 k subversion-perl i386 1.4.2-4.el5_3.1 c5-media 753 k subversion-ruby i386 1.4.2-4.el5_3.1 c5-media 339 k Installing for dependencies: apr-devel i386 1.2.7-11.el5_3.1 c5-media 231 k apr-util-devel i386 1.2.7-7.el5_3.2 c5-media 53 k ruby-libs i386 1.8.5-5.el5_3.7 c5-media 1.6 M Transaction Summary
================================================================================ Install 7 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 3.3 M
Downloading Packages: . . . -------------------------------------------------------------------------------- Total 2.8 MB/s | 3.3 MB 00:01 Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded 7/7 Installed:
subversion-devel.i386 0:1.4.2-4.el5_3.1 subversion-javahl.i386 0:1.4.2-4.el5_3.1 subversion-perl.i386 0:1.4.2-4.el5_3.1 subversion-ruby.i386 0:1.4.2-4.el5_3.1 Dependency Installed:
apr-devel.i386 0:1.2.7-11.el5_3.1 apr-util-devel.i386 0:1.2.7-7.el5_3.2 ruby-libs.i386 0:1.8.5-5.el5_3.7 Complete!
|
yum安装到这里,只需要修改几个配置文件就可以使用用了(仅仅是使用),在这里我选用的是svnserver这一种管理方式,为啥呢?
因为设置简单,比WebDAV快,不需要建立系统帐号,不会在网络中传输密码!
当然在配置之前我们要建立一个版本库,可以使用以下命令来建立版本库.
[root@server /]# svnadmin create /opt/svn/repos //创建版本库
[root@server /]# ll -sh /opt/svn/repos/ //查看建立的配置文件
total 56K
8.0K drwxr-xr-x 2 root root 4.0K Feb 2 06:43 conf
8.0K drwxr-xr-x 2 root root 4.0K Feb 2 06:43 dav
8.0K drwxr-sr-x 5 root root 4.0K Feb 2 06:43 db
8.0K -r--r--r-- 1 root root 2 Feb 2 06:43 format
8.0K drwxr-xr-x 2 root root 4.0K Feb 2 06:43 hooks
8.0K drwxr-xr-x 2 root root 4.0K Feb 2 06:43 locks
8.0K -rw-r--r-- 1 root root 229 Feb 2 06:43 README.txt
[root@server /]#
[root@server /]# ll -sh /opt/svn/repos/ //查看建立的配置文件
total 56K
8.0K drwxr-xr-x 2 root root 4.0K Feb 2 06:43 conf
8.0K drwxr-xr-x 2 root root 4.0K Feb 2 06:43 dav
8.0K drwxr-sr-x 5 root root 4.0K Feb 2 06:43 db
8.0K -r--r--r-- 1 root root 2 Feb 2 06:43 format
8.0K drwxr-xr-x 2 root root 4.0K Feb 2 06:43 hooks
8.0K drwxr-xr-x 2 root root 4.0K Feb 2 06:43 locks
8.0K -rw-r--r-- 1 root root 229 Feb 2 06:43 README.txt
[root@server /]#
这个命令创建了一个新目录 /opt/svn/repos,并在其中创建了一个 Subversion 版本库。这个目录里主要保存了数据库文件(还有其它一些文件).
假定已经有一些需要导入到 Subversion 版本库的条目(一组文件和目录)。
接下来,我们需要把这些条目整理到一个名为 jadeshow 的目录(或者其它任意目录)里。在这个
目录下,创建三个顶级子目录:branches,tags 和 trunk,(这个只是svn的惯例,你也可以不这么做)。将所有需版本化的数据保存到 trunk
目录下,同时保持 branches 和 tags 目录为空:
/tmp/jadeshow/branches/
/tmp/jadeshow/tags/
/tmp/jadeshow/trunk/
可以使用如下命令导入老的文件
(如果没有的话那么这个layer可以跳过)
接下来,我们需要把这些条目整理到一个名为 jadeshow 的目录(或者其它任意目录)里。在这个
目录下,创建三个顶级子目录:branches,tags 和 trunk,(这个只是svn的惯例,你也可以不这么做)。将所有需版本化的数据保存到 trunk
目录下,同时保持 branches 和 tags 目录为空:
/tmp/jadeshow/branches/
/tmp/jadeshow/tags/
/tmp/jadeshow/trunk/
可以使用如下命令导入老的文件
[root@server /]# svn import /tmp/jadeshow/\
file:///opt/svn/repos/jadeshow -m "inital import"
Adding /tmp/jadeshow/trunk
Adding /tmp/jadeshow/branches
Adding /tmp/jadeshow/tags
Committed revision 1.
[root@server /]#
file:///opt/svn/repos/jadeshow -m "inital import"
Adding /tmp/jadeshow/trunk
Adding /tmp/jadeshow/branches
Adding /tmp/jadeshow/tags
Committed revision 1.
[root@server /]#
接下来我们配置三个文件就可以使用svn了!简单吧。
[root@server conf]# pwd
/opt/svn/repos/conf //配置文件的主目录
root@server conf]# grep -v "#" passwd //passwd中起作用的配置
[users]
jadeshow = jadeshow //用户名 jadeshow 密码 jadeshow
[root@server conf]# grep -v "#" authz //认证文件
[groups]
admin = jadeshow //jadeshowshow属于admin组
[repos:/] //repos库根目录的权限
@admin = rw //@表示组 admin组有读写权限
* = r //其他人有读权限
[root@server conf]# grep -v "#" svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd //用户文件
authz-db = authz //认证文件
realm = /opt/svn/repos //库所在
[root@server conf]#
/opt/svn/repos/conf //配置文件的主目录
root@server conf]# grep -v "#" passwd //passwd中起作用的配置
[users]
jadeshow = jadeshow //用户名 jadeshow 密码 jadeshow
[root@server conf]# grep -v "#" authz //认证文件
[groups]
admin = jadeshow //jadeshowshow属于admin组
[repos:/] //repos库根目录的权限
@admin = rw //@表示组 admin组有读写权限
* = r //其他人有读权限
[root@server conf]# grep -v "#" svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd //用户文件
authz-db = authz //认证文件
realm = /opt/svn/repos //库所在
[root@server conf]#
配置完成.使用svnserver 启动
[root@server conf]# svnserve -d -r /opt/svn/repos/ //更多的用法可以参见svnserve --help
(检查svn是否启动)
[root@server conf]# netstat -antp |grep svn
tcp 0 0 :::3690 :::* LISTEN 5576/svnserve //svn已经启动为3690端口
[root@server conf]# ps -ef |grep svn
root 5576 1 0 07:30 ? 00:00:00 svnserve -d -r /opt/svn/repos/ // 其实更安全的办法是使用非root用户来启动.