1.配置版本库路径,作为版本库根目录
D:\svnRepitory\devRep
2.在版本库目录下创建与具体项目对应的子目录,这样只开一个服务器就能同时管理多个项目
D:\svnRepitory\devRep\OA
D:\svnRepitory\devRep\CRM
3.用命令创建版本库
svnadmin create D:\svnRepitory\devRep\OA
4.创建成功后产生如下目录结构
conf 存放版本库所使用的配置文件的目录
db存放存储版本数据的数据库文件的目录
hooks存放版本库钩子程序的目录
locks存储锁目录,用来跟踪库的访问者
format存储一个整数的文件,此整数代表库层次结构版本
README.txt 版本库自述文件
5.启动svn服务器
svn服务器必须处于运行状态才能响应客户端请求,帮助我们管理项目文件
a.命令格式启动
svnserve -d -r D:\svnRepitory\devRep
验证服务器是否启动成功,svn服务器监听3690端口,netstat -an查看3690是否被监听
b.注册windows服务
命令格式:
主命令 |
子命令 |
参数1 |
参数2 |
参数3 |
参数4 |
sc |
create |
服务名 |
binPath= "运行服务所需的二进制文件 路径及运行该二进制文件的命令行参数" |
start=auto 表示自动启动 |
depend=Tcpip 表示依赖Tcpip协议 |
注意:命令中等号左边没有空格,右边有一个空格
binPath组成格式说明
svnserve.exe路径 |
svnserve命令参数1 |
svnserve命令参数2 |
svnserve命令参数3 |
svn安装目录\bin\svnserve |
--service 表示以服务方式启动 subversion |
-r 表示版本库根目录 |
版本库根目录 |
sccreate SVNService binPath= "C:\Program Files\TortoiseSVN\bin\svnserve.exe--service -r D:\svnRepitory\devRep" start= auto depend= Tcpip
启动服务netstart SVNservice
停止服务net stop SVNService
删除服务sc delete SVNService
6.使用命令
6.1检出 先进入自己工作目录,然后检出
svn checkout svn://SVN服务器主机地址/具体仓库目录
svncheckout svn://localhost/OA
.svn文件夹用来保存与服务器交互的重要信息
6.2提交(需要有权限)
进入工作目录
svn add test.txt
svn commit -m "日志" test.txt
6.3更新
svn update
7.工作副本中几种常见状态
①没有修改,现行版本
本档案在工作目录中没有被修改,而且自当前版本之后,其他终端也没有任何该文件的修改被提交到服务器,即当前工作副本的版本和服务器端最新版本是一致的。对它执行svn commit和svn update都不会发生任何事。
②本地修改, 现行版本
这个文件被修改过,但这个修改还没有提交到服务器,而且自当前版本之后,其他终端也没有任何该文件的修改被提交到服务器,所以当前工作副本的版本和服务器端最新版本仍然是一致的。由于有尚未送交回去的本地修改,所以对它的 svn commit会成功提交你的修改,而 svn update 则不会作任何事。
③没有修改,过时版本
这个文件没有修改,但是版本库中有其他终端提交的修改。此时当前工作副本的版本比服务器端的版本落后了,我们称之为“过时”。对当前文件的 svn commit 不会发生任何事,而 svn update 会让工作目录中的文件更新至最新版本。
④本地修改,过时版本
服务器端存在没有更新到本地的修改,导致当前版本过时。如果这个文件在本地有未提交的修改,则无法提交,对它执行svn commit 会产生“out-of-date”错误。
此时应该先尝试更新本地文件。更新时SVN会尝试将服务器端的更新与本地文件进行合并,合并的结果有两种可能:一个是服务器端和本地修改位于文件的不同位置,合并成功;另一个是服务器端的修改正好和本地修改位于同一个位置,发生冲突。
8.将工作副本整体回复到某一个历史版本
svn update--revision 2
9.将某个文件恢复到某个版本的状态,不涉及其他文件
svn update pp.txt --revision 1
10.权限设置
打开svnserve.conf
anon-access = none 匿名访问设置为none
auth-access=write 打开版本库权限访问
password=db=passwd 表明同目录下的passwd文件保存用户信息
authz-db=authz 表明使用同目录下的authz文件保存权限信息
打开passwd创建用户
打开authz文件,#后面注释的是例子
创建用户组组名=用户名,用户名
[groups]
#harry_and_sally = harry,sally
#harry_sally_and_joe = harry,sally,&joe
canWrite=user1,user2
canRead=peo1,peo2
指定路径,给用户和用户组授权
#[/foo/bar]
#harry = rw
#&joe = r
# * = 屏蔽那些未设定的用户,让他们没有任何权限
[/]
@canWrite=rw
@canRead=r
user3=r 不加@表示用户,加@表示组
*=
11.多版本库共享配置
①password-db = ../../commConf/passwd
②authz-db = ../../commConf/authz
[users] # harry = harryssecret # sally = sallyssecret
userERP = 123456 userOA = 123456 userCRM = 123456 |
# [repository:/baz/fuz] # @harry_and_sally = rw # * = r
[ERP:/] userERP = rw * =
[OA:/] userOA = rw * =
[CRM:/] userCRM = rw * = |
12.查看工作副本信息
svn info [某个文件]
13.查看目录或文件日志信息
svn log [某个文件]
[注意:使用这个命令的前提是设置匿名访问为none,即:anon-access = none,
否则会出现“svn: E220001: 条目不可读”错误]