linux-svn-server Dec 27, 2016 · linux · 分享到: Linux上SVN服务器搭建 一般我们使用git进行代码的版本管理,但是git自身只能识别文本文件。我们常用的office系列是文本与二进制的组合,git diff等操作无法正常使用。况且office软件自带diff的功能,我仅仅想做一个版本管理与云同步,在不想用SharePoint的倾向下,我选择在云主机上搭建一个基于Debian Linux的SVN服务器。 Linux下的svn服务器 Subversion是一个自由开源的版本控制系统。在Subversion管理下,文件和目录可以超越时空。Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况,这样就可以借此将数据恢复到以前的版本,并可以查看数据的更改细节。$^{[1]}$ Subversion集服务端和客户端一体,当linux中拥有Subversion之后,既可以做SVN的服务端,也可以作为客户端。而在Windows下,服务端与客户端通常是不同的软件,例如服务端使用Visualsvn server,客户端使用TortoiseSVN。 在Debian Linux下安装Subversion特别简单sudo apt install subversion即可。 创建工作目录与库 首先我们需要给Subversion创建一个目录作为工作区。 1mkdir ~/svn 工作目录是存放SVN库的目录,因为会创建不只一个的库,比如下面的场景,接下来到工作目录中创建svn版本库。 1cd svn 2svnadmin create repo1 3svnadmin create repo2 这样就在工作目录下创建了两个版本库。 配置一个库 SVN版本库的配置文件都放在对应版本库的conf目录下,我们需要用到authz、passwd、svnserve.conf这三个文件。 首先编辑svnserve.conf主配置文件(应仔细阅读该文件里面的注释,了解每一项的作用),对以下几项修改如下:$^{[2]}$ 1[general] 2 3anon-access = none #取消匿名访问 4 5auth-access = write #授权用户有可写权限 6 7password-db = passwd #指定用户配置文件,后面会用到 8 9authz-db = authz #指定权限配置文件,后面会用到 编辑passwd文件,建立svn客户端用户以及密码,一行一个,这里建立了两个用户,对应我的两台主机。 1### This file is an example password file for svnserve. 2### Its format is similar to that of svnserve.conf. As shown in the 3### example below it contains one section labelled [users]. 4### The name and password for each user follow, one account per line. 5 6[users] 7# harry = harryssecret 8# sally = sallyssecret 9cx-laptop = buptlab635 10cx-server = buptlab635 编辑authz文件,指定SVN仓库目录,以及每个认证用户的权限,这里均为可读可写 1[aliases] 2# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average 3 4[groups] 5# harry_and_sally = harry,sally 6# harry_sally_and_joe = harry,sally,&joe 7 8# [/foo/bar] 9# harry = rw 10# &joe = r 11# * = 12 13# [repository:/baz/fuz] 14# @harry_and_sally = rw 15# * = r 16 17[repo1:/] 18cx-laptop = rw 19cx-server = rw 启动SVN服务,-d表示后台运行svn服务,-r是指定svn目录;然后执行了netstat检查端口,默认监听在3690端口上。 1svnserve -d -r ~/svn/ 2netstat -anp | grep 3690 # 通过查看这个端口判断SVN服务器是否正常启动 windows客户端TortoiseSVN的操作 在Windows使用SVN服务的话,需要下载一个TortoiseSVN客户端软件,安装好软件后在本地电脑创建一个工作目录,右键该目录选择checkout,checkout就是把SVN服务器上的文件下载到本地工作目录内的操作。 在对话框里输入SVN服务器的地址以及需要存放文件的目录。repo1是服务器工作区的一个版本库,然后点击ok按钮,之后会要求输入用户名密码,这个时候就输入在passwd里设置的信息即可。 路径问题 许多人搭建SVN服务器不成功都是因为SVN版本库路径的问题。在搭建过程中,有几个路径需要注意: SVN工作区所在路径,就是本文中mkdir ~/svn的路径,具体来说是/home/your-host-name/svn/,这个路径和svnserve -d -r ~/svn/的路径保持一致。 SVN版本库配置路径,即authz里面的路径,[repo1:/]这一项,这个名字要和对应版本库名字一致。/表示repo1这个版本库下的所有文件。 客户端checkout路径,在客户端checkout的时候,svn://server-ip对应于服务器上svnserve -d -r ~/svn/的路径,因此在checkout的时候,需要再跟上版本库的名字,即加上的repo1。 参考文献 [1] https://baike.baidu.com/item/subversion/7818587?fr=aladdin [2] http://www.linuxidc.com/Linux/2016-04/130346.htm