svn搭建
二.Subversion的安装与测试
Subversion的配置方式有很多种,同时也可以配置不同的操作系统之上,本文我讲解的是Subversion 1.5.4 for Apache2.2在Windows下的安装,通过与Apache的集成,Subversion可以采用Web Http的方式提供服务,这样便于在互联网的环境下使用,提供目录及其版本控制。这里值得注意的是Subversion对不同版本的Apache支持有所 不同,下载Apache的版本一定要和Subversion提供支持的Apache版本相匹配,否则将不能配置其进行正常工作,个体的请查阅 Subversion官方网站(http://subversion.tigris.org/)。
-
安装Apache2.2
关于安装Apache2.2,你可以先到官方网站上下载其软件http://httpd.apache.org/, 下载完后,先不要安装,首先要做的就是停掉IIS(如果你已经安装了的话),因为Apache2.2的安装默认要占用IIS的80端口,而这与IIS相冲 突,在停了IIS之后,我们就可以点击进行安装,安装过程中一直点击下一步即可(可以设置其要安装的路径),直到安装完成。安装完成后如下图所示。
因为Apach安装默认是80端口,如果它使用了80端口话,那IIS现在就无法使用了, 那么我们可以给Apache更换一个端口号,方法是打开Apache安装路径下的conf文件夹下的httpd.conf文件,在其中找到Listen 80这一行,将后面的80改成你相使用的端口号,如8000。下面我们就来测试一下看其是否可以正常工作,重新启动Apache,如下图所示:
Apache是已经启动了,那么我们怎么知道我们的设置是正常的呢?下面我们就找开IE,在其中输入http://localhost:8000/,如果你能够看到哪下界面,那么说明其已正常工作了。
-
安装Subversion
先到Subversion官方网站上一载Subversion 1.5.4,本人下的这个并非一个安装包,所以你要将其解压到你所指定的目录。如本人将其指定在C:\Program Files\svn-win32-1.5.4,如下图所示。
拷贝文件如下:
-
把这个安装目录bin里的mod_authz_svn.so和mod_dav_svn.so拷贝到Apache2.2安装路径下的modules 目录里(如本人安装路径的C:\Program Files\Apache2.2\modules)。
-
所Subversion目录里所有的*.dll文件及svnadmin.exe文件拷贝到Apache2.2安装路径下的bin目录里(如本人安装路径的C:\Program Files\Apache2.2\bin)。
-
配置Apache
打开Apache安装路径下的conf文件夹下的httpd.conf文件,找到下面两行,并把前面的#号删除(说明:#号在此文件中作为注释使用)。
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
然后在所有LoadModule的最下行增加如下两行:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
具体位置如下图所示:
重新启动Apache,这时其实已经将Subversion与Apache进行了初步的集成,如下图所示:
下面要做的事就是为Subversion创建一个用来存放文件的目录,比如说我们将其设定 为D:\SvnServer,那么我们如何来通知Apache我们的资源路径在什么地方呢?可以通过在httpd.conf文件的最后加入 Location标签来进行设置,如下所示:
#Add below section for add the sebversion project root description
#Update by Xiong Wei
#Date 09 April 2009
<Location /svn>
DAV svn
SVNParentPath D:/svnserver
</Location>
这个时候我们的资源目录已经设计好了,下面我们就来为此创建一个项目资源文件。
-
在开始菜单à运行中输入cmd,然后把目录转换到Apache的bin目录下;
-
通过输入如下命令来创建一个项目资源文件TestProject
svnadmin create D:\svnserver \TestProject
如下图所示:
创建的项目文件如下图示:
这个时候我们的项目文件已经创建好了,我们可以通过下面的Http网址进行访问了http://localhost:8000/svn/testproject,这个时候没有对此访问加任何访问权限控制。下面我们就来说一下如何创建用户。
-
用户创建
-
在开始菜单à运行中输入cmd,然后把目录转换到Apache的bin目录下;
-
通过输入如下图的命令来创建一个用户:
-
这个时候,你在D:\SvnServer目录下面就会看到一个svn_auth_passwd,这个说明用户文件已经创建,这里要加以说的是,-c用于第一次创建文件使用,如果以后要加用户就不能再使用-c了,要使用-m。
接下来你用http://localhost:8000/svn/testproject 去访问的时候,他就会叫你输入用户名和密码去验证了。
三.客户端的使用
上面我们已经配置好了Subversion的目录,即Server,那么我们对于每一个开发的程序员来说,如何Get Source Code呢?下面我们就来谈谈这个问题?
我们现在可以安装一个TortoiseSVN,可以到官方网站(http://tortoisesvn.tigris.org/)上面下载,这是一个非常好用的Subversion客户端软件,安装步骤非常简单,这里不在说明了。在安装好这个软件后,我们点击鼠标右键,你会发现多了几个菜单,如下所示:
客户端使用的时候,我们除了上面所说网页看的那种方式,我们可以点击SVN CheckOut从SVN Server从指定的目录去下载要使用的项目,会弹出一个配置框,在下载地址中输入http://localhost:8000/svn/testproject,点击OK,就会出现如下图的验证方式,输入在上面创建的用户名和密码,你就可以从SVN上面下载testproject的内容到本地了。
下面再和大家共享一下TortoiseSVN的一些简单用法:
-
增加文件
假设我们上面在一个叫GetTestProjectSource的文件夹上点击了SVN CheckOut,那么我们现在就在GetTestProjectSource里新建一个文件叫test.txt的文件,然后又击这个文件到这个文件上, 在TortoiseSVN中点击Add,点击OK,加完后,你会发现文件的图标发生的改变,就说明我们已经把文件加到SVN Server上了,这只是加上,还没有提交,你需要再点右击这个文件,你会发现多了一个SVN Commit项目,点击这个,把这个文件commit上去,这里你的文件才是正确到Server上了,同时文件图标也发生了改变。
这个时候如果有人同样的在来获得这个http://localhost:8000/svn/testproject 路径上的内容的时间就会看到这个文件被下载了。
-
修改文件
可能我们会在本地进行修改,就是我们一开始说的,昨天我把修改完的代码Commit上去了,那么今天我可能对这些代码做了修改, 修改完后我们应该怎么做呢?
我们现在就打开test.txt文件并在其中输入test,然后点击保存,这时你 会发现图标会变给,就说明这个文件已经在你的本地修改过,与SvnServer服务器上的版本已经不统一了,现在你服务器上的是昨天的代码,你这个是你刚 修改的代码。我们需要所这两个代码进行同步。
点击这个文件右键,再次选择 SvnCommit,代码就上去了。这个时候说明现在服务器上的代码都是最新的了。
上面我们把文件加上去后,或者更新了,那么假设现在有两个用户在进行开发,另外一个用户怎 么知道我做了哪些修改呢,又如何获得这些代码呢?我们可以通过右键点击这个文件夹,然后选择Update来更新当前的文件夹,就是他就可以获得我所修改的 代码了,具体的我就里就不说你了,自己做一下测试吧。
-
查看修改过的版本及比较版本
我们刚才对test.txt文件做了修改,并且更新到了SVN Server上,那么现在我们对这个文件再次做修改,在原来内容的test后面加上 by Xiong Wei,然后保存,这时我们先不要进行SVN Commit,我们点击,选择如下图所示的Diff。
我们将会看到本次修改与上次的修改有什么不同了,如下图所示:
现在我们将这个文件Commit上去。
比较说我们想知道这个文件被更新过多少次,每次之间代码的修改有什么区别,应该怎么办呢?
不用急,TortoiseSVN也为我们提供了这样的功能。我们可以左击这个文件,选择TortoiseSVN下的Show log,这个时候我们就可以看到整个被修改过的记录了,如下图所示。
我们可以从中任意选择两个条想要比较的记录(按Ctrl键选中),然后点击左键,选择Compare revisions。
我们还可以将我们本地的代码恢复到一个较早的版本,只要选择上面记录点的一条后,右击此记录,选择Revert to this revision,就是可将你本地的代码恢复到较早的版本了。
需要注意的是假设UserA和UserB都获得了 现在的版本Revision显示为3,当UserA再次修改后Commit,那么Revision就是4了,那就UserB就不能再更新了,会被提示一个 更新错误信息,只有把当前的版本更新到4后,在4上做操作才能被允许Commit。