注意:win搭建仓库和linux搭建仓库,指令相同
截图 不一致 正常,因为这是不同时间写的笔记( 如 仓库名不同等。有的截图上面是shop有的是book等)
客户端安装
官网https://tortoisesvn.net/ 客户端下载,安装完 鼠标右键没有小乌龟,重启下电脑
服务端安装
yum install subversion -y
开始创建仓库
svnadmin create /opt/shop #在/opt下创建shop仓库,shop是仓库名,想创建到哪就可以创建到哪。
启动svnserve
svnserve -d -r /opt/shop/ # -r是指定仓库目录; 用svnserve对shop仓库进行管理。为不同的程序项目创建对应的仓库,分别存储不同项目的程序代码文件。想同时启动多个仓库的话,就不要带具体仓库名,如ABC3个仓库都放在/opt中,那么启动时直接svnserve -d -r /opt 也就是把所有仓库的上级目录当成服务给启动起来
-d #独立端口运行
-r #仓库地址
该svn服务走svn协议,端口号码是3690
此时就可以给客户端的代码提交上来了
1、客户端先检出
检出时,会生成一个.svn的文件(这个.svn是隐藏文件,是本地电脑和远程版本库,沟通成功的标志)
假如是win环境,svn的服务端和客户端装在同一个电脑中,url写:svn://localhost/仓库名 即可
版本号:是该仓库的所有版本号
下图:本地目录 与 仓库联系成功
下图是隐藏文件,需要打开隐藏文件才能看到。打开方式“工具”->“文件夹选项”->“查看”看下图
因为我们都没有登录就....提交了
2、创建账号、密码(提交代码的时候使用)
注意:修改配置(顶头,不要留空格)
vim /opt/shop/conf/svnserve.conf #配置文件在你创建的仓库里
开启仓库匿名账号权限:
线上使用的配置权限:
anon-access = none //禁止匿名用户的访问
password-db = passwd //配置访问密码的文件(引入../passwd)
authz-db = authz //配置用户名文件(引入../authz)
2.1、给用户配权限
vim /opt/shop/conf/authz
2.2、设置账号、密码
vim /opt/shop/conf/passwd
2.3、重启svn服务器
改完配置文件就要重启(不然不让登,点击登录又跳转到登录)
新建文件-》add-》提交-》写注释-》点ok
在仓库内部查看已经提交的文件
注意:这部分是win环境下的截图,linux目录是一样的都是在,仓库/db/0下(0目录下,0对应0版本号,1对应版本号1,以此类推)
因为提交的是版本是1,所以0目录下,打开1文件
下图存放的是:提交时候写的日志
下图存放的是:本次提交的内容(代码)
用户更换svn主机名地址
想更换主机名地址:
1、删除.svn文件
2、通过新的主机名地址checkout 与仓库联系(checkout检出时,重新填url)
同一个文件的不同版本切换
注意:这是以前笔记截的图,和上面的截图路径可能有些不符,但操作流程是一样的
一个程序文件可以在svn仓库里边形成许多不同版本,并可以随时查看、对比。
查看:
不同版本切换:(切换后文件的,内容是当前版本号的);
切换方式1:
切换方式2:
切换版本后,先修改在提交,冲突解决方案
方案一:可以删掉冲突文件,在update一遍(将被删的冲突文件,更新下来)
方案二:将冲突生成的2个子文件删除掉,图标就从黄色!就变成红色?了,这样提交后有点类似于回退在修改代码,容易导致版本混乱,不建议使用此方案
对比版本差异:选中俩个版本号,做对比
上图:选中后->右键单击Compare revisions 进行对比(弹出下图)
解决代码冲突
广义角度的冲突:提交程序文件 本地版本号码 小于 仓库服务器版本号码.
狭义角度的冲突:多个程序员对同一个文件、同一处代码进行修改,在他们提交文件的时候会产生冲突
总思路:修改冲突,在提交
大家修改的代码不在同一处:
原因:有其他人提交了,才会导致,本地号码 < 仓库号码
解决:1、直接执行update操作,使得本地 和 仓库的号码保持一致。
2、把仓库最新文件更新到本地,与本地文件做融合(非覆盖操作,会把两个人的修改内容体现在一个文件中)
3、之后继续提交给文件即可。
大家修改的代码在同一处:
解决:先执行update更新操作,把本地冲突文件打开“稍作”调整,继续提交。
稍作调整:<<<和==都删掉,新的和旧的留一个 或者 俩人别写在同一行
下图中17和18是版本号。这3个文件必须删除,否则冲突文件修改后,也不让提交
下图 == 相等于一个分割线,上面是linken(冲突者)写的,下面是mary写的
手动修改,10行的剪切到8行上了
修改冲突的2种编辑器
第一种:随便打开一个txt编辑器
第二种:用下面的
1、在冲突的文件上(选中文件--右键菜单—TortoiseSVN—Edit conflicts(解决冲突)),出现如下窗口
Theirs窗口为服务器上当前最新版本
Mine窗口为本地修改后的版本
Merged窗口为合并后的文件内容显示
2、如果要使用服务器版本,在Theirs窗口选中差异内容,右键,选择第1个选项,Use this text block(使用theirs的文本块做融合,也就是放弃Mine的了)。
第2个选项,和1个差不多
注意:1和2是覆盖,3和4才是融合
第3个选项是:融合时,服务器最新版本在后
第4个选项是:融合时,服务器最新版本在前
以上选项,如果是在Mine那操作,3和4的效果取反
分支合并到主干
合并的意思是:把A的版本记录,复制到B的版本仓库中
注意:先更新 在合并
要合并到prd,就在prd的项目目录下合并
将代码从sat环境上合并到prd
点击show log选择合并哪些版本号
在prd上在提交下(如果是php的项目,提交完还要svn up一下,
)
svn回滚
总思路:在哪里出错,就在哪回滚,回滚后就在那提交-》提交完进行svn up
1、先打开show log
2.1、直接回滚到某个旧的版本,这个版本后的变更都会被删除(一般使用这种)
恢复后,要重新提交-》进行svn up。相当于上次提交白提交了
2.2 删除中间的几个版本,执行"Revert chages from these revisions"
此是回退到多选的上一个版本,回退、修改完,还是要提交的-》进行svn up。而不是删除commit记录
(假如提交错误了,也可以使用这个方法,重新提交)
3、未提交的撤回
如果你只是修改了很多文件,并没有commit到SVN,想放弃修改,更新为仓库中最新版本。可右键Tortoise SVN,然后从列表选择 revert。
Svn服务端运行方式
Svn服务常见的运行访问方式有3种:
1、 独立服务器访问:我用的这种
访问地址:svn://svn.mingshi.org/sadoc;
2、 借助apache等http服务
访问地址:http:// svn.mingshi.org/sadoc;
a、 单独安装apache+svn
b、 Csvn(apache+svn)是一个单独的整合的软件,带web界面管理的Svn软件
3、本地直接访问(列如:file://application/svndata/sadoc)
svn up更新之后U和G什么意思
U:表示从服务器收到文件更新了
G:表示本地文件以及服务器文件都已更新,而且成功的合并了
其他的如下:
A:表示有文件或者目录添加到工作目录
R:表示文件或者目录被替换了.
C:表示文件的本地修改和服务器修改发生冲突
客户端图标
① 蓝色问号:新建的一个文件,本地.svn 和 远程仓库 对该文件都没有记录-》add后变蓝色加号
② 蓝色加号:本地的.svn对该文件有形成管理(远程仓库 还没有该文件记录) -》只能变红色叹号(修改过)
③ 红色叹号:本地文件 与 .svn和仓库文件 不一致(用户自己修改了该文件)-》提交后,只能变绿色对号
④ 绿色对号:本地文件、.svn管理的版本文件、仓库文件 三者内部一致
⑤ 黄色叹号:表示该文件正处于冲突状态-》解决冲突、融合代码后,会变成红色叹号,然后提交代码,会变成绿色对号
错误集锦:
1、目标计算机积极拒绝,无法连接
解决方案:svnserve -d -r 仓库的绝对路径 #使用该命令启动仓库
2、新目录内部的文件不能直接提交,必须是目录本身已经提交给仓库了,该目录的文件才可以单独进行(add/)commit提交动作。
win上账号和权限
操作哪个仓库、设置哪个仓库的账号和密码
引入对应的辅助配置文件:
1、账号设置
2、给账号 设置权限
2.1、给具体用户设置权限
操作svn提示输入用户名和密码:
2.1、给一个组别 设置权限
如果有许多程序员,他们是属于同一个小组的,
他们的针对一个项目的权限还都是一样的,权限的设置 和 取消都完全一致,管理员对这个小组全部人员进行权限控制就比较繁琐。
为了权限分配比较方便、后期维护也非常便捷,就给他们设置到一个组别里边去,给组别设置权限,就等于给每个用户设置权限了,权限操作非常方便。
2.3、开启只操作某个目录的权限
步骤:
① 管理员先把该目录video给创建出来并提交给svn仓库
② 给外部团队 设置账号 和 设置工作目录、和其分支目录权限
③ 外包团队 建立与仓库分支目录 的联系(checkout)
④ 外包团队给该 目录提交文件
⑤ 管理员执行update更新操作,把该分支目录从仓库更新下来即可查看外包团队的工作情况。
给外包人员设置只可以操作Video目录的权限:
win将svn设置成,开机启动项服务
把svn也做成开机启动项服务,类似apache服务:
有的系统禁止使用sc等比较底层的指令,可以把创建、删除服务的指令设置为“批处理”文件(在liunx里叫shell文件)执行即可。右键点击以管理员身份运行