SVN常用方法
使用svn的好处:
多人协作开发解决代码合并覆盖问题
版本回退(将一个或多个文件恢复到旧版本)
查看修改历史(日志),方便领导把控开发进度
SVN执行流程:
搭建svn服务器:安装服务器端软件、创建项目仓库、启动仓库服务 在个人开发电脑,安装svn客户端软件 创建项目目录,通过checkout检出操作,与svn版本库建立连接,下载所有的代码。 日常开发,通过commit提交操作,将本地的修改,提交到svn版本库 其他人提交过代码,可以通过update更新操作,将版本库中最新的代码(被修改部分)更新到本地。 (注: svn服务器的地址 svn://IP , 由服务器搭建者告知大家,或者互相告知)
服务端的使用:
创库指令:svnadmin create '仓库目录地址'
启动仓库服务:svnserve -d -r ‘仓库地址’ ,光标闪烁为挂起状态,表示svn仓库服务以启动,挂起状态不能关闭窗口
svn默认使用匿名用户,只有读的权限,可以执行检出及更新操作
需要手动设置匿名用户写权限,才能执行提交操作
svn仓库目录中的conf目录是配置文件的目录,svnserve.conf 主配置文件,修改svnserve.conf ,anon-access=write 设置匿名用户写权限,注意:顶格写,后面不能加注释
配置多仓库:在启动svn仓库服务时,仓库地址指向多个版本库的共同的上级目录。
客户端的使用:
检出操作:也就是把项目下载到目录里,在空白处checkout 设置svn仓库地址和要检出到的目录,点击ok 显示 At revisional:0代表检出成功,并且版本号为0,检出成功后目录会多一个.svn隐藏目录,这个是svn对当前目录下的文件进行版本控制的,相当于“管理员”,不要修改或者删除其中的内容
提交文件:选中文件右键 TortoiseSVN add 操作将文件添加到svn版本控制范围,将文件标记为已添加状态,再次选中文件 右键svn commit 打开提交页面,可以添加日志,和下方要提交的文件,点击ok进行提交,每提交一次版本号加1
更新文件:Update 从版本库更新最新的文件,一般在上班后先执行一次,或者每次开发一个新的功能前执行一次。
svn设置忽略文件:设置不希望提交的一些与项目代码无关的文件,设置方式:选中要忽略的文件 -> 右键 -> TortoiseSVN -> add to ignore list 添加到忽略列表
其中四个选项: 文件名.后缀 忽略当前目录中的指定文件 *.后缀 忽略当前目录中的指定后缀的所有文件 文件名.后缀(recursively) 忽略当前目录以及子目录中的指定文件 *.后缀(recursively) 忽略当前目录以及子目录中的指定后缀的所有文件 对某个文件设置为忽略文件后,其不会出现在提交列表中。 设置为忽略文件之后,一般可以通过反向操作,取消忽略的设置 选中要忽略的文件 -> 右键 -> TortoiseSVN -> remove from ignore list 从忽略列表移除
查看日志:TortoiseSVN show log 查看日志
版本回退: TortoiseSVN -> update to revision
可以直接输入版本号,或者点击show log去选中一个指定版本。
注意:版本回退功能,只是将本地工作副本中的内容,更新到了一个指定版本,svn版本库中还是有最新的代码。
版本回退功能,只用于获取某一个历史版本的代码,并且备份用于其他用途。
不要在版本回退后的历史版本中直接进行开发。可以先通过svn update指令更新到最新的代码,再进行开发。
版本冲突:
多个人同时对同一个文件做修改,并且修改在同一行。 先后提交到版本库时,第一个人提交成功,版本号+1, 其他人提交时,svn会提示必须先更新到最新版本再提交。 如果其他人在本地工作副本进行更新,svn会提示发生了冲突。 冲突的模拟:在本地检出两个工作副本,模拟两个人同时开发。两个工作副本先都更新最新的版本,然后先后更改代码并提交。 两个表现:一是发生冲突的文件中,包含了多个版本的代码 二是目录中发生冲突的文件多出来几个不同后缀版本的文件 发生冲突后必须先解决冲突然后再提交到版本库。 解决冲突方式: ①继续提交本地的修改,使用svn resolve操作 修改发生冲突的文件中的代码,保留指定的代码(删除冲突标记行)。 选中发生冲突的文件,右键-> TortoiseSVN -> resolve 解决 打开解决冲突界面 选中要解决冲突的文件,点击ok。将指定的文件设置为已解决状态,因冲突产生的多余的文件都被自动删除。 继续执行svn commit提交操作即可。 ②放弃本地的修改,使用svn revert操作 将指定文件还原成最新版本 选中发生冲突的文件,右键->TortoiseSVN -> revert 还原 打开还原界面 选中要还原的文件,点击ok, 放弃本地的修改,并将指定文件变为最新版本。 冲突是发生在本地的工作副本的,版本库中并没有冲突。
权限控制:
权限控制分为两部分:
认证(Authentication)和授权(Authorization)
认证文件:鉴别用户身份,可以设置用户名和密码(passwd)
授权文件:判断用户是否具备某种操作(读写)的权限(authz)
注意:版本库的配置文件,只对当前版本库生效,每个版本库都有自己的配置文件。
权限控制设置步骤
权限控制设置步骤:
①修改svnserve.conf,关闭匿名用户的访问权限
②修改svnserve.conf,开启认证文件,开启授权文件
③修改passwd文件,设置用户名和密码
③修改passwd文件,设置用户名和密码
第一种方式:给指定用户直接授权
第二种方式:对用户进行分组,对分组统一授权
完成以上设置之后,重新在工作副本中,进行svn的相关操作,会提示需要先认证,填写正确的用户名和密码进行认证,可以选择记住认证信息,以后不需要进行重复认证,否则每一次都需要进行认证。
清除保存的认证信息:TortoiseSVN -> settings设置 打开设置界面,在左侧找到Saved Data点击 Authentication data 后面的清除
svn自启:使用svn仓库,需要先启动仓库服务,必须保持命令行窗口的挂起状态,如果关闭窗口,则仓库服务会停止。这种方式不太友好,更好的方式,将svn仓库服务设置为开机自启动的服务。
创建自启:
sc create svn binPath= "svn服务器端安装目录 -r 仓库地址 --service" start= auto --service 表示其为服务项目 start= auto表示电脑开机就自动启动该服务
1. 必须使用管理员身份打开命令行窗口
2. 箭头位置必须放置一个空格,否则创建会失败。
net start svn 启动svn服务
net stop svn 停止svn服务
sc delete svn 删除svn服务(记住:svn如果需要删除必须先停止)
结束~~~