现在的Subversion已经足够稳定,而且已经进入了它的黄金时段。我们看到大量的项目都在使用它完成版本控件的工作。本文将主要针对Windows平台讲述安装Subversion服务器的步骤。本文所使用的环境是如下
操作系统 | Windows XP Professional SP2 | 尽量使用原版,因为有朋友反映在部分类似番茄花园的盗版XP上,由于内部文件做过优化,导致Subversion服务端软件异常。 |
服务端软件 | Setup-Subversion-1.6.5.msi | Windows MSI installer with the basic win32 binaries – includes binaries for Apache 2.2.x (2.2.9 or higher is required within the 2.2.x series) |
客户端软件 | TortoiseSVN-1.6.5.16974-win32-svn-1.6.5.msi | 常用的GUI客户端 |
客户端软件 | Slik-Subversion-1.6.5-win32.msi | 命令行工具,如果你习惯用cvs的命令行,那这个你会很适应 |
Subversion的主页是http://subversion.tigris.org/ 或者你也可以直接点击这里下载 Setup-Subversion-1.6.5.msi
TortoiseSVN 的主页是 http://tortoisesvn.tigris.org/ 你也可以直接点击这里下载TortoiseSVN-1.6.5.16974-win32-svn-1.6.5.msi
第一步,先创建repository, 可以用命令行也可以用图形工具。
首先我们安装运行Setup-Subversion-1.6.5.msi 安装界面比较简单,我们主要关注安装位置,假定我们安装在默认位置C:\Program Files\Subversion
现在我们创建repository,使用的命令是svnadmin。本例中,我们要在c:\svnroot下建立repository。那么我们使用的命令行如下:
C:\Program Files\Subversion\bin>svnadmin create c:\svnroot C:\Program Files\Subversion\bin> |
也可以用Tortoise SVN图形工具创建repository,在想要建立为repository的目录上右键选择TortoiseSVN->create repository here.
这一步影响之后svn访问的地址,如果在目录C:\svnroot下建立了repository,而你的安装svn server的服务器IP是192.168.1.100,则你的svn 访问地址就是
svn://192.168.1.100/svnroot
第二步,权限配置
建立好repository之后,我们要对Server 进行一些简单的配置。打开c:\svnroot下的conf目录,编辑svnserve.conf,修改里面的内容。
auth-access = write
password-db = passwd
anon-access = read
前面的#去掉,打开这个注释。
同时修改anon-access = none
现在svnserve.conf的片断看起来类似
[general] ### These options control access to the repository for unauthenticated ### and authenticated users. Valid values are "write", "read", ### and "none". The sample settings below are the defaults. anon-access = none auth-access = write ### The password-db option controls the location of the password ### database file. Unless you specify a path starting with a /, ### the file’s location is relative to the directory containing ### this configuration file. ### If SASL is enabled (see below), this file will NOT be used. ### Uncomment the line below to use the default password file. password-db = passwd ### The authz-db option controls the location of the authorization ### rules for path-based access control. Unless you specify a path ### starting with a /, the file’s location is relative to the the ### directory containing this file. If you don’t specify an ### authz-db, no path-based access control is done. ### Uncomment the line below to use the default authorization file. # authz-db = authz ### This option specifies the authentication realm of the repository. ### If two repositories have the same authentication realm, they should ### have the same password database, and vice versa. The default realm ### is repository’s uuid. # realm = My First Repository |
修改好svnserve.conf后,我们再修改 passwd文件。加入我们需要的用户名joe和口令123。passwd内容如下:
### This file is an example password file for svnserve. [users] |
第三步, 启动SVN server 服务
现在就可以启动server了。启动的方法有很多种,在这里针对本文的环境我们介绍两种,一种是以deamon方式调用,一种是以Windows Service的方式调用。
如果是以deamon的方式调用,那么命令行如下:
C:\Program Files\Subversion\bin>svnserve -d -r c:\svnroot |
此种方式,一量cmd窗口退出就失效。
还有一种是以Windows Service 的方式来调用server(推荐)。生成svn服务的命令如下,最好是直接复制粘贴到cmd窗口,再改下svn repository路径。
C:\>sc create svn binpath= "C:\Program Files\Subversion\bin\svnserve.exe --service -r c:\svnroot" displayname= "Subversion Server" depend= tcpip start= auto C:\>net start svn |
这里要特别注意一下sc命令的使用。主要是注意一下=号后面的空格和svn路径的空格。
1. 如果你没有创建服务成功,可以使用命令sc delete servicename(上例中的服务名是"svn", 由sc create 指定 )
然后重新执行上述命令。
2. 注意上述命令中的书写格式,等号前面无空格,等号后有空格;service 之前是两个短横杠。
第四步,客户端的使用,在windows下面一般就用TortoiseSVN 图形工具。
服务端开始运行后,我们就可以关注一下客户端的问题了。TortoiseSVN的安装我没有什么可说的,就是一路的NEXT。这里我们描述一下我们的用于test的项目。以本文为例假定我们的项目目录是D:\mytemp\svn_test1,假定目录下有一个test1.txt文件。在svn_test1上按右键选TortoiseSVN–>Import 在URL of repository里输入svn://192.168.159.129/svnroot 点击OK后,按提示输入用户名和口令,就可以把项目导入Subversion 。好了,现在我们可以试一下,看看刚才我们导入的内容,并开始正常的update,commit工作吧。我们删除svn_test1里面的所有文件。然后在svn_test1目录上按右键选SVN Checkout URL of repository里输入的仍是svn://192.168.159.129/svnroot Checkout directory里输入的是D:\mytemp\svn_test1 Checkout Depth 选择Fully recursive,点击OK后,按提示输入用户名和口令,这时我们再看svn_test1目录,就可以看到我们导出的test1.txt文件了。
我们打开test1.txt文件尝试修改并更新一下。然后我们在svn_test1目录上按右键选svn commit,在message中我们可以输入一些日志来标志本次修改,然后点击OK,按提示输入用户名口令就可以提交了。update的操作也是类似,只不过是相反的操作。