Tortoise-SVN版本控制系统

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。英文提示则不需要
    原文作者:宸风如苏
    原文地址: https://www.jianshu.com/p/2778e5e40d01
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞