1,概述:svn分服务端和客户端,服务端使用软件:Setup-Subversion-1.6.5.msi,服务端的重要功能开启服务器并创建一个文件仓库用来存储我们提交的文件,客户端上传提交要存储的文件,使用软件为:TortoiseSVN-1.6.6.17493-win32-svn-1.6.6.msi,该软件通用性好,各行各业都可使用,命令封装在右键菜单中:如果使用eclipse,使用插件:eclipse_svn_site-1.6.5.zip。
2,服务器方面的操作:
(1)使用命令sc create SVN-Service_xiabo binpath= "C:\Program Files\Subversion\bin\svnserve.exe --service -r E:\NewMinePhonePC\repository" displayname= "SVN-Service_xiabo" start= auto depend= Tcpip将svn服务设置成windows 开机就启动的服务。sc create 为创建开机启动的命令,后面的皆为参数,“SVN-Service_xiabo”为服务名称,binpath= "C:\Program Files\Subversion\bin\svnserve.exe为服务对应的路径,displayname= "SVN-Service_xiabo为该服务显示名称,E:\NewMinePhonePC\repository为库所在的目录,通常repository为库的父目录,这样一来,在改目录下就可以创建多个库,通常一个库对应一个项目,depend= Tcpip暂时未知,照写就行。sc delete [服务名称] 为删除服务的操作,注意该名称是服务名称,而不是显示名称,否则会报错。
更正:E:\NewMinePhonePC\repository该目录被设置为svn服务器可以存放库的路径,该目录内所有子路径(比如repository/soft/android,android为库,所有字文件夹都可为库)都可设为库(库必须创建在一个空白的文件夹中),并且一个库内是可以存放若干的项目(如此多个项目可以放在一个库中,减少创建库操作),如果库名和提交的项目名字相同,会把项目内的文件直接加入到库对应的文件中内,如果不同,会在库添加项目名称文件夹,然后再把项目内的文件加入到项目文件夹内,即库名和项目名相同,就会少建一层目录,避免两层目录名字一样。顺便提一下库中不在创建新库只能添加项目。
(2),服务安装并设置好后,就要创建库,即在E:\NewMinePhonePC\repository目录下创建一个或多个库,使用命令:svnadmin create E:\NewMinePhonePC\repository\NewManCalllog,即创建NewManCalllog这个项目的库。注意在库创建好后一定要在conf中修改配置文件为自己需要的设置,conf为这个库的配置文件,包括svnserve.conf文件中anon-access = read代表,匿名用户只有读的权限,anon-access = write有了写的权限(只用这两种选择),password-db = passwd,authz-db = authz代表使passwd和authz两个文件生效,将#去掉才能使这些命令起作用比如anon-access = read前的#没有去除,就不能进行任何操作,#取出后,read没有改为write,你就只能检出,而不能提交,因为只有读的权限。password-db = passwd,authz-db = authz前的#不去除passwd和authz两个文件是无效的,不起作用的。,如果懒得配置这些,就可anon-access = write并将前面的#去掉,即匿名用户可以进行读和写的两个操作。
给一个权限控制的例子供参考;
权限控制
3,客户端的使用
(1)TortoiseSVN工具会记住你在某个目录下的操作,一旦你右键后,会智能提示你在此目录下你能做的操作,比如,第一次时只能检出操作,之后就可以更新和提交操作等等
比较有用的操作revert 撤销本次的操作,即恢复到最近一次更新的内容,show log 进入以前所有版本目录,在改 目录上右击有与某版本有关的各种使用操作,比如open打开某个版本,revert to the version 恢复到这个的版本。
(2) 使用eclipse插件时,在svn视图内配置库,即使eclipse找到你创建好的库,目前不知道eclipse能不能自己创建库。如果eclipse和库关联好后,就可以将eclipse中的项目提交到库中了,即在项目上右击选择team/share project 命令之后,在弹出的对话框中选中需要共享到的库,这样本地项目就和库创建关联了,当共享到版本库中之后,项目就会出现各种标示!在把项目提交到版本库中,这样我们就把本地的一个项目分享到了共享库中。而其他的成员就可以在共享库进行修改和更新了。如果这个项目和之前别的库已有关联的时候,就要先断开就的关联,在建立新的关联。
我们在修改之前一定要更新,在提交之前一定要和资源库同步一下,以免覆盖别人的操作。
在版本控制中,如何将一个项目放到指定的文件夹中:
首先将一个含有文件夹的文件目录导入到版本库中,选中要导入的文件夹单击右键,选中tortoiseSVN-->import,再选中要导入的项目,,指定到要导入的文件夹中!
以上的步骤 为正确的步骤,如果有步骤差错就会报异常的,比如Error: Can't connect to host '': 由于目标机器积极拒绝,无法连接。这是我在eclipse上安装好插件,没有创建服务,就进行操作时报的异常,该异常的意思为连接不到主机,因为你机器上的服务没有运行,所以连接不到:如果服务创建了,但没有创建库,eclipse也会报对应的库找不到异常:如果库创建好后,没有修改配置文件,会报authzXXX异常。
一个svn整个流程熟悉下来,真的头疼,以上提到的报错是我还记得的,期间还有很多一时记不起的。不过还好,这个工具花两天时间总算弄明白了,所以记下来备忘,也提供给相学的人,相信会少走很多弯路。