1、svn好处
1:很好的解决了开发过程代码冲突问题,因为多个组员可能修改同一个文件,造成同一个文件同一个文件相同行代码进行整合的时候会产生冲突。
2:很好的解决了代码找回(丢失)问题。
2、svn软件的安装
svn是c(client)/s(server)软件的架构,有服务端和客户端。
服务端下载地址: https://www.visualsvn.com/visualsvn/download/
客户端下载地址: https://tortoisesvn.net/downloads.html
1、安装服务端
一、双击安装程序点击next下一步。
二、接受软件的相关协议,点击next。
三、选择勾选最后一项,配置svn服务端的相关的命令到系统的环境变量,点击next下一步。
四、选择标准版Standard Edition。
五、选择一个安装目录,这里以安装到D:\svn\server为例。
六、点击finish完成。
七、在cmd窗口中出输入svn命令,出现Type 'svn help' for usage 说明svn服务端环境变量已生效。
如果安装的时候勾选了环境变量,但是依然没有出现以上提示,有以下两种解决办法:
①重启电脑
②(推荐)点击环境变量path选项,直接点击确定即可,不需要修改,这样可以立即生效
再次关闭黑窗口重新打开,输入svn命令进行测试即可。
2、安装客户端
安装客户端的时候,先检查自己电脑系统的位数,选择对应系统位数安装即可。查看系统位数:计算机。
安装TortoiseSVN步骤:
1、双击安装程序,点击next下一步。
2、接受软件的相关协议,点击next。
3、选择选项command line client tools-Will be installed on local hard driver
4、点击TortoiseSVN,配置安装目录,目录自定义,这里以安装到D:\svn\client\为例,点击next。
5、安装完成,点击finish.。
6、测试是否安装成功,在桌面鼠标右键,多出两个选项svn Checkout和TortoiseSVN说明安装成功:
7、如需汉化可安装系统对应位数的汉化包即可,安装一路next,会自动找到上面svn客户端的安装位置
3、单仓库的布置
第一步:建立项目目录,即创建文件夹
第二步:把项目目录变为仓库
svnadmin create 项目目录绝对路径
第三步:开启监管仓库目录的服务
svnserve -d -r 项目目录绝对路径
-d 作为后台服务运行
-r 监管的目录
注:监管黑窗口不可关闭
4、svn三大指令
1、checkout 用于首次与仓库建立连接,获取代码到本地
2、commit 提交本地代码到svn仓库
3、update 更新仓库最新的代码到本地目录
5、连接svn服务器
第一步:在我们本地电脑中,建立一个项目检出目录,用于存储检出的代码
具体操作:打开检出目录文件夹,右键,点击SVN checkout
第二步:输入我们svn服务器的地址,指定一个检出代码的本地目录
链接成功之后,会在检出目录多个一个.svn的隐藏文件夹,版本为0, 说明是一个新建立的仓库
检出和版本库浏览器的区别:
1:检出checkout:是把仓库所有的代码都进行检出到本地目录。
2:版本库浏览器:可以浏览仓库中有哪些文件,有选择性的检出某些文件。
6、上传代码到SVN仓库
第一步:在检出的目录中,建立一些测试文件,鼠标右键选择commit提交指令
第二步:【重要】填写提交的备注,主要是用于后面代码的版本回退(代码找回)
第三步:提交。默认新创建的仓库,只能更新或检出,不能提交,需要修改此仓库配置文件,进行权限配置。
7、单仓库的权限配置
1:匿名用户提交
每个仓库的conf目录中,都会有以下三个配置文件:
svnserve.conf 当前仓库的核心配置文件,可以开启某些文件的功能
passwd 给当前仓库的增加用户名和密码
authz 给当前仓库的用户设置一些权限
权限w write可写可提交
权限r read 可更新不可提交
设置匿名用户访问,仅需修改svnserve.conf配置文件即可,把其中anno- access=read前面的#号给去掉,且把read改为write。
注:最前面要顶格写,即不要留空格。只要保存配置文件会立刻生效,不需要 重新监管服务。
2:授权用户的权限配置
第一步:修改svnserve.conf配置文件,开启passwd和authz文件的功能
anon-access=none 代表匿名无访问权限
auth-access=write 允许授权用户可更新也可提交
password-db=passwd 代表开启passwd配置文件
auth-db=authz 代表开启authz配置文件
第二步,修改passwd文件,给当前仓库增加一些用户名和密码
格式:用户名 = 密码(明文)
第三步,修改authz文件,给当前仓库的用户名分配一些权限(rw)
组名 = 组成员 (多个用逗号隔开) 例:cainiao_group=cainiao、
[/] 对单仓库所有文件进行权限控制,也可以针对其中一个目录如[/core]
@组名 = 权限(rw) 例:@cainiao_group=rw
用户名 = 权限 (rw) 例:admin = rw
* = 其他人没有权限
注:权限有r但未有w,只能更新代码但不能提交。权限目录后面不要加斜杠/。
8、svn代码冲突问题的解决
产生冲突的原因:不同用户对相同文件的相同行代码都进行了修改并且提交。
解决:
第一步: 选中有冲突的文件,鼠标右键选择SVN更新
更新下来会多出三个辅助文件
文件名(黄色标识):把服务器上面最新文件内容与即将提交的内容进行一个融合。
文件名.mine: 当前用户即将要提交的文件内容。
文件名.r(前版本):所有用户提交之前,即文件冲突之前,仓库上最新的文件内容。
文件名.r(后版本):仓库上最新的文件内容。
处理办法:把三个辅助文件都删除,与别人商量过后修改有黄色感叹号的文件,进行代码整合,再次提交。
9、svn中的版本回退
第一步:选中要回退的文件,右键,点击Tortoise,更新至版本
第二步:点击显示日志,通过之前提交的日志来找回
10、update更新注意点
1:当本地文件检出目录无变动,svn服务器文件改动的时候,更新会从服务器取出所有文件覆盖当前文件。
2:当本地文件有改动,服务器文件没有改动的话,更新的时候不会覆盖此文件。
3:本地文件和服务器文件都有改动的话,改动部分不冲突,就合并文件到本地,有冲突,手动解决,再提交
11、svn中部署多仓库
第一步:建立多个项目文件夹(android、java)
第二步:把上面的android和java变为项目仓库。
svnadmin create 各个仓库目录
第三步:监管各个仓库的父目录,这样才可以访问到其中的某个仓库项目代码
svnserve -d -r 仓库父目录
怎么访问多仓库中的某个项目仓库代码?
访问形式:svn://ip/仓库名/目录
注: svn://127.0.0.1 这种url访问形式只能对单仓库有效,多仓库的访问后面需加仓库名。
12、多仓库的权限设置
还是修改三个文件:svnserve.conf 、passwd、authz
1:svnserve.conf配置和之前单仓库配置一样
2:passwd配置和之前单仓库配置一样
3:只需要改变authz配置文件即可,看下面的注
注:单仓库和多仓库的authz权限文件配置区别:
单仓库:[/目录/子子孙孙目录]
多仓库:[当前仓库名:/目录/子子孙孙目录]
13、SVN其他功能
1:清除用户名和密码
做法:鼠标右键TortoiseSVN-->Settings-->已保存数据-->清除全部-->确定
2:export导出指令
export指令:相当于拷贝项目,导出的代码不会含有隐藏文件.svn,即不受svn版本控制
做法:鼠标右键TortoiseSVN->导出
3:更改svn服务器地址
做法:TortoiseSVN-->重新定位-->输入新的仓库地址即可
14、svn监管服务注册成windows系统服务
1、创建SVN监管服务
快捷键win+r,输入cmd,以管理员的方式执行以下命令:
sc create SVNService binpath= "D:\svn\server\bin\svnserve.exe --service -r D:\app" start= auto
特别注意:
binpath=后面、start=后面都有一个空格,其中SVNService 是服务的名称,可自定义,不重名即可。
注:如果是以之前黑窗口的形式监管服务,就不可以在使用window服务的形式进行监管。
2、服务相关控制指令
1、关闭、开启、重启服务:
net stop|start|restart 服务名(如开启svn服务:net start SVNService)
2、删除服务:
sc delete 服务名 (如删除svn服务:sc delete SVNService)
3、cmd命令的批处理
将上述命令写在后缀名为bat的文件中,然后以管理员方式运行bat文件即可
15、svn中的钩子程序
用途:
利用提交前的钩子让用户在提交代码前强制用户必须填写备注信息。
利用提交后的钩子把svn仓库代码实时同步到网站web目录。
钩子种类:
每个仓库目录中都会有个hooks目录,其中包含了所有的钩子模板代码
其中使用最多的有两个钩子:提交前的钩子(pre-commit.tmpl)、提交后的钩子(post-commit.tmpl)(重点,开发中使用较多)
钩子实战:
1:后钩子同步代码到web站点
第一步:
首先要确保web站点目录与要同步的仓库建立关联,在web站点目录检出一下就有了。
后面只要向blog仓库成功提交代码,代码就会自动往web站点目录更新。
第二步:
打开blog仓库的hooks目录,把post-commit.tmpl文件复制一份,改名为post-commit.bat。
post-commit.bat内容:
SET SVN="D:\svn\server\bin\svn.exe"
SET SVN="web站点目录"
SVN update %DIR% --username 用户名 --password 密码
或者:
@echo off
SET REPOS=%1
SET REV=%2
SET DIR=%REPOS%/hooks
SET PATH=%PATH%
SET WEB_DIR=C:\Users\oj\Desktop\www.php15.con
svn update %WEB_DIR% --username admin --password admin123
2:前钩子强制用户填写提交时备注信息
第一步:
打开blog仓库的hooks目录,把pre-commit.tmpl文件复制一份,改名为pre-commit.bat,
pre-commit.bat修改内容如下:
set svnlook="D:\svn\server\bin\svnlook.exe" 改为自己的安装路径
找到findstr后面有几个点就代表最少输入几个字符
找到echo. 1>&2 echo是客户端提示给用户的信息
注:如需要中文提示,为防止乱码需要把pre-commit.bat文件的编码改为ANSI。英文提示则不需要
网友评论