为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

建立Subversion服务器

2010-12-13 5页 doc 28KB 12阅读

用户头像

is_661146

暂无简介

举报
建立Subversion服务器像我以前说过的,subversion 是一个非常好的版本控制系统。如果你对版本控制这个概念不太了解的话,我来简单解释一下。比如我有一个项目,有几百个文件,包括项目的相关文档,图表,和一些视频音频文件,它们都被放在电脑的一个文件夹内。随着项目的发展,文件夹内的会增加新的文档图表等文件,而老的文件也会被修改,同时也许会有一些文件会被删除。在版本控制系统下,每一次对该项目文件夹下的改动,都会被记录,如果哪个文件被删错了,或是想把文档恢复到以前的版本,可以轻而易举的达到。更了不起的是,如果该项目被一个团队来执行,该团队的每一个成员都可...
建立Subversion服务器
像我以前说过的,subversion 是一个非常好的版本控制系统。如果你对版本控制这个概念不太了解的话,我来简单解释一下。比如我有一个项目,有几百个文件,包括项目的相关文档,图表,和一些视频音频文件,它们都被放在电脑的一个文件夹内。随着项目的发展,文件夹内的会增加新的文档图表等文件,而老的文件也会被修改,同时也许会有一些文件会被删除。在版本控制系统下,每一次对该项目文件夹下的改动,都会被记录,如果哪个文件被删错了,或是想把文档恢复到以前的版本,可以轻而易举的达到。更了不起的是,如果该项目被一个团队来执行,该团队的每一个成员都可以对项目内的文件进行管理和同步,这样就可以保持大家永远 on the same page. 如果我说的不清楚,可以参考一下 Google Docs 的 revision 功能,对于一篇文档,你可以回到以前的版本。这个就是一个简单的版本控制。本质上说,subversion 干的活和 Google Docs 干的一样,但不同的是,subversion 使用上更加灵活,功能上更加强大。 对于普通的个人应用,建立 subversion 服务器完全可以在自己的电脑上进行,而且非常简单,因为完全不用去考虑安全的因素,所以也不必设置相关的验证身份的程序。如果想把“项目文件夹”(我不知道应该怎么翻译,以下改称 repository 或 repo)放在局域网上,甚至互联网上,就相对复杂一些了。 除了这篇序言,我准备分三篇说说如何建立 subversion 服务器,Windows 和 Linux 都适用,因为这几天我一直都在 Linux 下,例子就举 Linux 下的,Windows 下也是一样的,只需把路径格式换成 Windows 的就可以了。 基础知识 在 Subversion (以下简称 svn) 下有两个概念要清楚,一个是 repository (以下简称 repo), 一个是 working copy (以下简称 wc)。前者是项目所在的地方,后者是你做修改的地方,两者的内容可以完全一样,也可以不完全一样,两者在电脑上一般都表现为文件夹或目录。你在 wc 里所做的改动可以 commit 到 repo 中,如果你成功把 wc 中的内容 commit 到 repo 中,那么 repo 就会自动更新一个版本 (revision)。如果不进行 commit 操作,你在 wc 上做的任何修改对不会对 项目产生任何影响。如果你愿意,可以随时把 wc 替换为任何一个 revision (包括以前的老版本)。 要使用 svn 就要先安装,ubuntu 的用户很简单,直接在终端处输入: sudo apt-get install subversion 就完成了,Windows 需要到下载页面下载 Windows 版本,我建议下载 .zip 包,直接解压就可以使用了。 在 windows 下使用最好把 svn 的执行文件路径加入到 PATH 这个环境变量中去,以便能够在任何路径下都可以正常使用,你很快就能发现,这点很重要。 建立自己的 repo 假设我要正在制作一个 wordpress 主题,我需要对制作过程中的文件建立一个 repo, 以便在需要时可以随时“回到过去”。制作中的主题所在的目录为 /foo/bar,我准备在 /home/michael 下建立一个 repo,那么我需要这么做: #建立一个名为 theme 的 repository svnadmin create /home/michael/theme #把 /foo/bar 下的内容导入到 theme 中并建立 repo,这个 repo 的版本号是 1。 svn import -m "第一次导入" /foo/bar file:///home/michael/theme 从此以后,如果在本地电脑上想 checkout 刚才建立的 repo 只需在任何路径下输入 #建立一个名为 baz 的 working copy svn checkout file:///home/michael/theme baz 就完成了一个 working copy 的建立。Windows 用户需要把路径格式换成file:///X:/path/to/repo。其中 X: 为 repo 的盘符。 在 wc 中你可以任意修改,如果不满意可以直接用 svn revert 命令恢复。在适当的时候你觉得需要把你的修改提交到 repo 中去了,可以用: svn commit -m "blah blah" 这样就产生了新的版本。”blah blah” 是给这个新版本的注解。 svn 命令 要注意的一点是,在 wc 下做文件操作时,比如删除或移动文件,不能直接用 rm, mv 来进行,这样 svn 不能追踪到文件的变化,你必须使用 svn del 或是 svn move 来完成删除或移动的操作。下面举几个命令的例子: svn add filename #新增一个文件 svn move filename foo/bar/baz #移动 filename 到 foo/bar/baz 下 svn rename filename1 filename2 #给文件改名 跟普通的 DOS/Linux 命令没什么不同,更多具体的命令可以参考 svn book。Windows 用户如果觉得命令行太麻烦,可以用一个名叫 TortoiseSVN 的图形化前端来代替命令行。 总结 通过以上的内容我们已经可以: 1.​ 建立 repository 2.​ 导入项目到 repo 中 3.​ 建立 working copy 4.​ 一些简单的 svn 命令 以上对个人的小项目来说基本够用了,但如果要用的得心应手还是不行,大家可以用 svn help 命令来查看其它命令的用法。如果你对命令行操作感到不适应,这里尤其建议 Windows 下的用户使上面提到的 TortoiseSVN 软件,完全图形化界面,使用非常简单。如果需要帮助,可以看看 Lifehacker 上的使用指南。 下面两篇准备谈谈 Subversion 在服务器上的应用,包括建立服务器以及用户的验证。 让我们来点真的吧 Part1 中介绍了在本机上建立 repo 自用,但如果想把 repo 放在网上供其他用户 checkout,则还需要架设 svn 服务器--这也是本文的目的。 svn 服务器可以用两种方法架设,一种比较简单,使用 svn 自带的 svnserve 实用程序,另一种直 接利用 Apache 架设,需要加载额外的模块。svnserve 简单够用,我打算在这篇里先说说怎么用它架设 svn 服务器。 Svnserve 就包含在 subversion 的程序包中,你的电脑上安装了 subversion 就自动有了 svnserve 这个小型 svn 服务器。这个服务器跟 Apache 这个巨无霸比起来简单轻便,使用自己的一套,访问时区别于 http:// 前缀,使用 svn:// 前缀。 用 svnserve 搭建 svn 服务器 我们要把 svnserve 运行起来,我将在例子中介绍具体的使用方法。 下面假设我在本机上运行 svnserve,IP 为 192.168.0.1,这个 svn 服务器为局域网内的电脑提供 svn 服务。我打算把 svn 服务器的访问地址设为 http://192.168.0.1/svnprojects/projectX,其中 X 为不同的多个项目。整个过程如下(以 windows 下为例): 首先确定 repo 在本机上的储存的位置,比如我准备把 repo 放在 D:\svnprojetcs\ 下,那么在命令行运行 svnserve -d -r d:\svnprojects 就可以了。其中 -d 参数让 svnserve 运行在后台,-r 参数限定了 repo 在网络上可以访问的地址。这样如果网络上其它的计算机要 checkout 这个服务器,只需要输入 svn checkout svn://192.168.0.1/project1 而 repo 在本机上实际的位置是 d:\svnprojects\project1。同理,如果想 checkout project2,则把上面的 project1 改成 project2 就可以了。 到此,一个简单的 svn 服务器就算是基本架设好了。但如果要正常使用,我们还需要设定用户的验 证和相应的权限。 现在我们先建立一个叫 project1 的 repo,然后转到 project1中: svnadmin create d:\svnprojects\project1 cd d:\svnprojects\project1 project1 目录下有一堆目录,进入 conf 并打开 svnserve.conf 这个文件,找到以下几行,并把前面的注解符号 ‘#’ 去掉,注意千万在每行的前面别留任何空格。 anon-access = read auth-access = write password-db = passwd 其中 anon-access 和 auth-access 分别为匿名和有权限用户的权限,默认给匿名用户只读的权限,这很好,我们不需要改它们。但如果想拒绝匿名用户的访问,只需把 read 改成 none 就能达到目的。password-db 后的 passwd 则为定义用户名及密码的文件路径。这个文件默 认跟 snvserve.conf 在同一个目录,下面看看怎么配置 passwd 中的内容。 [user] # harry = harryssecret # sally = sallyssecret harry 和 sally 这两行分别定义了可以对 repo 进行写入的用户的用户名和密码。我们可以在下面加上自己的用户名和密码,比如 testsvn = tester 这样就给了用户 testsvn 往 repo 中写的权限。存盘退出后,svn 服务器就算正式可以运行了! 把所有需要管理的项目都放在 d:\svnprojects 这个目录下,像正常那样用 svnadmin create 命令建立 repo,如果要 checkout repo,则在命令行中输入: svn checkout svn://192.168.0.1/project1 如果要 commit 刚需要输入刚才设置好的用户名和密码: svn commit -m "we are commiting changes!" --username testsvn --password tester 给 Windows 用户的建议 如果你打算在 Windows 系统上运行 svnserve,只是简单的在命令行输入 svnserve -d -r d:\svnprojects 不是个好方法,一是每次都这么干太麻烦,二是服务器启动后为了保持它的运行,你必须让命令提示符窗口一直悬在桌面上,影响美观。最好是把 svnserve 作为系统的一个进程每次启动自动运行: D:\> sc create svn binpath= "D:\svn\bin\svnserve.exe --service -r D:\svnprojects" displayname= "Subversion Server" depend= Tcpip start= auto 把当中的路径换成你的 svn 安装目录就可以了。 在 Apache 中部署 Subversion 实际上并不比用 svnserve 难多少,它的难点在于一般人没有修改 Apache 配置的权限,如果你有相应的修改权限,那么搭建一个 svn 服务器不是一件难事,我们来看看应该怎么配置。 准备工作 首先确定 Apache 正确安装,mod_dav 和 mov_dav_svn 这两个模块也被启用,在 Debian 系的 Linux 上可以这么安装: sudo apt-get install apache2 subversion libapache2-svn 在 Windows 平台上,可以下载一个 XAMPP,Apache MySQL PHP 什么的就都有了。 确定 mod_dav 和 mod_dav_svn 被打开: a2enmod dav dav_svn 基本设置 以上的准备工作做完后,就正式开始了,还是拿 part2 的机器网络环境,同样的例子。 我准备让 repo 的网络访问地址成为 http://192.168.0.1/svnprojects/projectX, 修改 /etc/apache2/conf 下的 httpd.conf,加入如下代码: DAV svn SVNParentPath /path/to/svnprojects 更多详细的命令用法请参见 Apache 手册,下同。SVNParentPath 命令用来把网络访问地址和 repo 的实际地址对应起来。 这样就设置完了,如果你把 repo 建立好了,现在就已经可以 checkout 了,输入: svn checkout http://192.168.0.1/svnprojects/project1 设定用户的权限和验证 但这样肯定是不够的,因为还没有设定相应的用户权限,现在不管谁都可以往 repo 里塞东西,为了更好的控制,我们还需要设定访问权限,比如让指定的用户可以 commit,其他的只能 checkout。 因为我们在 Apache 上,所以访问权限的控制就可以直接借用 Apache 的,首先为你的用户设定用户名和密码: htpasswd -cmb /path/to/passwdfile/passwords user1 test1 这样就把用户名和密码储存在 passwords 中了,加密方式为 MD5。如果需要添加新的用户, htpasswd -mb /path/to/passwdfile/passwords user2 test2 以此类推。 然后回到我们在 httpd.conf 中添加的代码,修改一下: DAV svn SVNParentPath /path/to/svnprojects AuthType Basic AuthName "Test Repository" AuthUserFile /path/to/passwdfile/passwords Require valid-user 在这段代码的控制下,任何人都可以对 repo 进行 checkout,但只有 user1 和 user2 才可以 commit, 的作用是控制 HTTP 请求,如果 HTTP 请求是 GET PROPFIND OPTION REPORT 中的一种,则不需要去验证用户。 最后,你需要把 repo 所在的目录和文件的所有权都改成系统中操作 Apache 的用户,这样在 commit 的时候才会被 Apache 认可。在 Ubuntu 中,这个用户叫 www-data: sudo chown -R www-data /path/to/repo 如果你用其它系统或是用 Windows,可以在 Apache 的配置文件中找到 User 这个命令来知道应该把目录的所有权交给谁。 以上就是一个初步的 Subversion 服务器的搭建,这一篇考虑到实际上用的人可能不多,要用的人估计肯定会自己配置,因此我写的不够细致,比如说没有说到基于 SSL 的设置步骤。如果你确实需要了解,可以联系我,我们一起探讨。
/
本文档为【建立Subversion服务器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索