在 Windows 上安装 SVN Subversion 服务端

时间:2022-08-18 09:43:33

 

Windows 上安装 SVN Subversion 服务端 现在的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的主页是 http://tortoisesvn.tigris.org/你也可以直接点击这里下载TortoiseSVN-1.6.5.16974-win32-svn-1.6.5.msi
TortoiseSVN
首先我们安装运行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>

建立好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.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.
[users]
# harry = harryssecret
# sally = sallyssecret
joe = 123

现在就可以启动server了。启动的方法有很多种,在这里针对本文的环境我们介绍两种,一种是以deamon方式调用,一种是以Windows Service的方式调用。
如果是以deamon的方式调用,那么命令行如下:

sc create svnserve binpath= "\"D:\Program Files\Subversion\bin\svnserve.exe\" --service --root E:\ROOT\Work\tool\SVN_PRJ" displayname= "Subversion" depend= tcpip start= auto ——注意为了回避目录名中的空格等字符,将整个binpath值放在双引号中;另外,sc 的命令行很特殊。在 key= value 对中,key 与 = 之间不能有空格,但是在 value 之前,必须有空格。 定义了服务之后,就可以使用GUI工具(如服务管理面板)进行停止、启动和查询,也可以通过命令行的方式进行: C:\>net stop svnserve C:\>net start svnserve C:\>sc delete svnserve(需要确定先停止了服务)

 

C:\Program Files\Subversion\bin>svnserve -d -r c:\svnroot

    服务端开始运行后,我们就可以关注一下客户端的问题了。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文件尝试修改并更新一下。我们在test1.txt里加上一行“哈尔滨市,高宏伟 QQ:21807822”,然后我们在svn_test1目录上按右键选svn commit,在message中我们可以输入一些日志来标志本次修改,然后点击OK,按提示输入用户名口令就可以提交了。update的操作也是类似,只不过是相反的操作。     界面的操作不太容易用文字来表达,但界面很直观,相信大家摆弄摆弄就可以搞定。刚才为了保证文章的连续性,我们没有说明如何以Windows Service 的方式来调用server。生成svn服务的命令如下:

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. 如果你没有创建服务成功,那你就不要安装到Program Files目录下,因为它带了一个空格,你可以安装到一个比较简单的目录下再试试,如c:\svn_server。
2. 如果安装到这样简单的目录还不能创建成。那你要注意binpath的等号后面有一个空格。你一定要完全按照上面的格式来写。
3. 实在不行你就把所有的环境先都配成和本文一样,然后再直接粘贴过去,这样可以保证你运行成功。等所有的问题都没有了。你再按照你的想像重新安装一次,看看你的问题出在哪儿,这样也好有个对比。
关于Slik-Subversion我在这里就先不做探讨了,它是一个命令行工具。一般来说GUI就可以满足你的简单需要。如果你还有什么更高的要求,可以再去研究,它就好像cvs一样好用。非常感谢大家能阅读我的文章。如果还有什么问题,请大家与我联系QQ:21807822,e-mail: dukejoe@163.com 转载请注明出处为http://blog.donews.com/dukejoe/archive/2009/09/16/1560917.aspx,并保留作者姓名和本句话,谢谢合作
 Windows下创建版本库 可以使用TortoiseSVN图形化的完成这一步,在目录E:subversionrepository下"右键->TortoiseSVN->Create Repository here...“, 然后可以选择版本库模式, 使用默认即可, 然后就创建了一系列目录和文件。
  [Tips]如果下载的是setup.exe版本,安装程序安装后会自动设置系统变量,如果下载的是zip版就需要手动设置系统变量.
  也可以使用命令行来创建:
  C:\> svnadmin create F:\svn\
1.   Eclipse+TortoiseSVN简明使用指导(For NCEE) 现在才写SVN的文章有些惭愧,不过好歹打着For NCEE的旗号。这是一个写给NCEE开发团队的指导性文档,也希望给遇到过同样问题的人以指导,NCEE团队使用的是Google Code SVN 服务器,如果是其他服务器,需要进行相应设置。   先介绍下什么是SubVersion(SVN),SubVersion是一个目前正在被普遍使用的版本控制工具,可以用来管理项目的源代码,也可以用于多人协同项目开发。有了它,你可以在开发的过程中按照自己的设定看到项目的不同版本点,并且能够根据需要恢复至某一版本或状态,你还可以让你的team在网络环境下进行项目开发,并且很好的管理各个成员对代码的提交。 1.安装     本文介绍的是在Windows+Eclipse下的SVN的使用方法,需要下在3个文件,考虑到版本不同,只给出首页地址,根据自己的环境选择: 1.subversion   http://subversion.tigris.org/    SVN主体部分 2.tortoisesvn   http://tortoisesvn.tigris.org/    SVN的一个免费开源客户端 3.subclipse     http://subclipse.tigris.org/      Eclipse下的SVN插件,让你直接在Eclipse进行svn操作       其中subclipse也可以通过Eclipse的Software Updates获得,如果是自己下载的,则需要解压缩后把features目录和plugins目录中的内容拷贝到Eclipse下的features目录和plugins目录中。subversion和tortoisesvn都是可执行文件,运行后安装。安装完之后需要重启Windows和Eclipse。重新启动后在任意文件夹中单击右键,看看是不是会出现乌龟和SVN的相应操作菜单项,启动Eclipse,“新建”中也会出现SVN选项 2.下载项目         在完成安装之后就可以进行项目的下载了。打开Eclipse,选择“File->New->Other”,进一步选择SVN中的“从SVN检出项目”,在向导中选择“创建新的资源库位置”,单击Next,输入SVN服务器地址,NCEE成员输入“https://ncee.googlecode.com/svn/trunk”,单击Next,选择要检出的项目目录,选择根目录trunk即可,继续Next,根据要服务器上项目的结构,可以选择“作为新项目检出”或者“作为工作空间中的项目检出”。前者将完全按照新建项目向导构建项目,后者则是按照服务器中已记录的项目信息进行构建。这里NCEE成员选择前者,Next,类型选择为Web Project,剩下的就完全像新建项目一样了,自己去完成吧。在Check out的过程中会提示输入用户名和密码,如实输入即可。 3.管理项目         在Eclipse项目的文件中,单击右键,Team、Compare with和Replace with菜单项中即可进行相应的SVN操作。常用的操作主要有Commit(提交)、Update(更新)、Rename(重名命)、Delete(删除),需要注意的是,如果是对文件的重命名和删除操作,一定要在SVN菜单中操作,即通过SVN来完成重命名和删除操作,否则会导致本地和服务器不同步,进而导致文件会被锁定。具体操作就不多说了,可以参阅tortoisesvn用户手册。         另外在Windows中也可以对从服务器上下载下来的文件进行操作,过程跟Eclipse上的一样。需要注意的是,对于从服务器上下载下来的项目文件和目录,在左下角会有一个绿色的箭头或红色的叹号(如上面的图),标志着本地内容与服务器内容是否统一。 4.结束语         第一篇CSDN文章就这么诞生了(援引fido的话),主要是为了NCEE项目开发所作,虽然匆忙且潦草,但还是基本说明了问题。希望整个项目组开发顺利,加油吧:)最后不得不说,CSDN日志编辑的相应速度出奇的让人无法忍受的慢,唉!   到此你的插件已经安装完毕了,说明一下,在Step 5中选择的是在线安装,也可以在http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91下载后进行本地安装,本地安装选择New Local Sit...,然后找到解压出来的那个文件夹,后面的都一样了。 卸载的方法也很简单,也是点击 Help => Software Updates => Manage Configuration 按上图操作就可以卸载了。 二、Use Subclipse in Eclipse 3.x(使用) 先向版本库中加入一个Eclipse工程,我这里是随便搭建的一个WEB工程 SVNtest ,将它导入版本库svn://localhost/ts(这使用本机装的版本库,其他机器就要打ip地址,之前说过)。导入后用版本库浏览器找到你导入的工程目录,把其下WebRoot\WEB-INF\classes目录删掉(注意:不删出以后会报错,原因后面再讨论)这些初始化的操作都用客户端工具完成的,毕竟插件的功能还不是那么强大。 做好以上的准备后打开Eclipse编译器,点击编译器右上角的Open Perspective 打开SVN资源库界面,新建一个资源库 选择资源库的位置,这里我们就用刚才搭好的 svn://localhost/ts 作为工程目录,点击Finish后如果成功则会看到版本服务器中工程的树形结构了(可能需要用户密码验证)。在svn://localhost/ts 根目录上点右键,选择“验出”(英文版的可能叫 Check Out),在弹出窗口中选择“作为空间的项目验出”,下边的项目名称随便叫,我这里还是用 SVNtest 作为项目名称。 一切没有问题了点击Finish。之后它就会从服务器上把工程下到你本地了。好啦,来到Eclipse编辑栏会发现刚才下的工程文件都会带有SVN版本控制标记了,再去Workspace看看,也会发现下载的工程文件夹,并且也有控制标记。 而且里我们会发现在SVN控制下的文件多出来一个Team选单,打开一看原来就是一个客户端工具呀,提交,更新,同步,合并,切换……我们再熟悉不过了,自己试试吧 ^_^。 顺便说一下刚才为什么要删除class目录,起初我没有删掉它,更改提交没有问题,但在更新时总是报错:……Working copy not locked; this is probably a bug, please report svn:……,提示就是class目录下的.svn有毛病,到http://www.tigris.org查找解决方法,有一段描述: This message is coming straight out of the Subversion library, so technically it is Subversion asking you to report the problem to them. This error message is kind of their general error message when something really unexpected happens. In the case of Eclipse, the problem is almost always one specific thing. The problem is that your Eclipse build folder was versioned and added to your repository. What happens is that when Eclipse does a full build it will delete everything in this folder, including the ".svn" metadata folder. When Subversion cannot find this folder it issues the above error. The solution is to delete this folder from your repository, which you can do from the SVN Repositories view. Then try deleting the folder from your working copy and perforiming an update. You might need to checkout your project again. Once you have a valid project again, be sure to add the build folder to the svn:ignore property of its parent folder so that the problem does not happen again. If this is not your problem, then as best as you can try to figure out what might have led up to having this problem and report it on th Subversion users@subversion.tigris.org mailing list 大意:重新部署工程时会将文件夹WEB-INF/classes下的内容全删了,包括".svn"这个文件夹,从面导致SVN找不到这个文件夹的信息,于是报错。 解决的方法是在SVN仓库内将classes下的内容清空,然后在确保本地工程已完全提交的情况下,将本地工程包括文件删除,再从SVN仓库中重新取出。 导致此问题的原因善不明确,估计是往这个文件夹手动添加了文件。 安装方面就介绍到此吧,如果有什么问题在联系我吧。