- SVN 手把手跟我做
- 一、VisualSVN-Server 的安装与基本配置
- 二、TortoiseSVN的安装与配置
- 2、TortoiseSVN安装
- 四、IDEA中配置SVN
- 二、TortoiseSVN的安装与配置
- 2、TortoiseSVN安装
- 四、IDEA中配置SVN
SVN 手把手跟我做
一、VisualSVN-Server 的安装与基本配置
1、VisualSVN-Server 下载地址:https://www.visualsvn.com/
2.安装步骤
三、基本配置
3.1、首先配置groups,添加两个组,一个admin组,一个guest组
3.2、创建用户
3.3、为用户分配组
如果你想将guest_1用户分配入guest组,和上面一样的步骤
4、创建一个新的库(Repository)
4.1、创建
4.2、选择FSFS类型
4.3、创建库的名字
4.4、选择是空库,还是之前库的分支
4.5、选择自定义权限
4.6、为不同的组分配权限
这样admin组的所有用户,都有了 读/写 bbs_demo库中文件的权限
同样,guest组中也给上读/写权限。
注意:我这里的分组只是为了后面的测试区分,真正的应用中,guest用户组不应该有写的权限
4.7、创建完成,显示库的相关信息
点击这个URL地址,我们已经可以通过网络访问库了
注意:由于这里是在我本机上测试,这里的URL地址中yingside3f02
其实就是指本机,所以,这里可以使用IP地址替代,比如可以改为127.0.0.1,或者localhost。
由于这里生成的连接是https的,使用chrome浏览器访问可能有警告,无所谓,跳过就可以了
以后,在客户端访问的时候,也就是这个地址了,当然如果是局域网,改成相应的IP地址就ok了 这样,一个空的服务器端目录就建立好了。建议重新启动一下计算机
二、TortoiseSVN的安装与配置
1、TortoiseSVN 下载地址:https://tortoisesvn.net/downloads.html
2、TortoiseSVN安装
安装完成之后强烈建议重新启动计算机,这样SVN的图标提醒才会起作用
3、TortoiseSVN的使用
3.1、基本测试
3.1.1、创建一个空文件夹,在文件夹中右键选择SVN Checkout
3.1.2、指定svn库地址
3.1.3、https证书授权
由于是https的访问,所以需要授权证书
3.1.4、用户登录
以administrator身份登录,这样才有远程库的读/写权限
3.1.5、完成后没有反应,其实打开隐藏文件显示,在该文件夹下已经生成了一个.svn的隐藏文件
3.1.6、上传本地文件到远程库中
(1)、在该文件夹下随便新建一个文件进行测试
(2)、SVN Commit
在远程库中,已经可以看到上传的文件
3.2、再次测试
3.2.1、在一个新文件夹中再次SVN Checkout
3.2.2、选择远程库位置,以及本地checkout文件夹
远程库中已有文件被下载到本地库中
3.2.3、执行新的Commit操作
注意:在Commit之前,我删除了Test.txt文件
3.2.4、执行新的操作
再次执行操作,在这次的操作中,我删除了一个文件,新增了一个文件,并且还修改了一个文件中的内容,再次提交,查看一下变化
3.3、版本的回退
由于我们已经提交了几个版本,比如上一个版本的提交有问题,可以使用版本的回退
3.3.1、查看版本日志
3.3.2、回退版本
在日志中可以看到已经提交的几次版本
选择我们要回退的版本
3.3.3、回退版本的提交
注意现在的回退的版本还是在本地,我们做出相应的修改之后,需要再次提交版本,比如:这里我再重新修改Test.java文件,BBSstyle2.css文件不再删除,而index.html文件也不再创建
3.4、更新
更新其实就是和远程库同步,这个一般在多人开发的时候,每天都需要执行的步骤,直接点击SVN Update从服务器下载最新的版本内容
3.4、切换用户
默认当第一次登陆时,TortoiseSVN会自动帮我们保存登陆的用户名和密码,如果需要修改,可以按照下面的方式
清除掉之前登录的记录
使用新用户在新的文件夹中重新执行SVN Checkout
我们不点击记录登录信息,方便我们做测试
为了解释下面冲突的问题。BBS文件夹我们使用administrator用户操作,BBS2文件夹使用guest_1文件操作
3.5、冲突
3.5.1、引起冲突的操作
如果多人开发,并且同时修改同一个文件,很容易引起版本的冲突
但是无论怎么样,多人开发,每次开发前的第一件事情,是进行SVN Update 保证本地的版本,与远程库的版本保持一致,如果在版本不一致的情况下进行开发,会导致很多问题
首先,BBS与BBS2文件夹都保证在了同一版本下。简单来说,有两个开发人员都在开发BBS项目,都update了远程库的内容
比如,admin修改了Test.java文件并上传提交了版本
administrator用户修改之后,已经更新了版本 5
同时,guest_1用户也在原来的 4 的版本上对Test.java文件进行了修改
但是,这个时候就会报错了
很明显,因为之前administrator用户已经更新了版本修改了Test.java,导致你修改的这个文件提交不上了。
这个时候不要乱操作,因为就算你的修改不重要,也不能随意的删除这些文件,因为你的操作最后都需要和远程库同步
3.5.2、解决办法
(1)、首先同步服务器版本
很明显,服务器版本中的Test.java与你自己已经修改的Test.java产生了冲突。 在Test.java文件夹中出现了下面几个新文件 打开Test.java文件
(2)、Edit conflicts编辑冲突
Theirs -- 窗口为服务器上当前最新版本
Mine -- 窗口为本地修改后的版本
Merged -- 窗口为合并后的文件内容显示
如果要使用服务器版本,在Theirs窗口选中差异内容,右键,选择Use this text block(使用这段文本块)。
同理如果要使用本地版本,在协商后,在Mine窗口右键,选择Use this text block(使用这段文本块)。
当然也可以使用下面两个选项,意思就是一个在前,一个在后,我们选择最后一个,意思是服务器版本在前,自己的版本在后
选择之后变成下面这个样子:
点击右上角保存。
(3)、Resolved解决冲突
3.6、如何降低冲突解决的复杂度
1、当文档编辑完成后,尽快提交,频繁的提交/更新可以降低在冲突发生的概率,以及发生时解决冲突的复杂度。
2、在提交时,写上明确的message,方便以后查找用户更新的原因,毕竟随着时间的推移,对当初更新的原因有可能会遗忘
3、养成良好的使用习惯,使用SVN时每次都是先提交,后更新。每天早上打开后,首先要从版本库获取最新版本。每天下班前必须将已经编辑过的文档都提交到版本库。
四、IDEA中配置SVN
4.1、本地已有项目工程与远程库关联
4.1.1、配置SVN远程库
当然前提是必须先有一个SVN远程库 我已经重新配置了一个新的SVN远程库,并配置了用户组admin
4.1.2、IDEA配置远程SVN库
4.1.3、添加远程SVN库地址与用户
4.1.4、本地目录与远程SVN库关联
由于远程库中没有内容,这里看不到任何变化,可以直接先Checkout,让本地文件与远程库关联
4.1.5、选择本地的目标地址
4.1.6、确认远程库与本地库关联的路径
4.1.7、确认格式化版本
4.1.8、重新打开工程
点击确定和本地目录会与远程库关联,要求重新打开,由于我们远程本来就是一个空的库,选择在本地重新打开就ok,打开之后还是在原来的BBS目录下
4.1.9、选择提交,将本地的程序提交到SVN库
等待提交
4.1.10、IDEA分析
IDEA会将代码进行分析再上传,对于一些有问题的,或者没有处理的代码,IDEA会提出警告⚠️
你可以回看一下这些问题,或者无论如何都提交
4.1.11、IDEA中再次修改
提交完成之后,每次代码的修改或者新增删除,在IDEA中都会有及时的显示
4.2、直接将SVN已有工程导入到IDEA本地路径中
4.2.1、通过远程SVN创建新工程
4.2.2、选择远程SVN库
4.2.3、选择/创建本地目录
4.2.4、远程库与本地目录对应
4.2.5、相关配置
5374/15590065350397.jpg)
三、基本配置
3.1、首先配置groups,添加两个组,一个admin组,一个guest组
3.2、创建用户
3.3、为用户分配组
如果你想将guest_1用户分配入guest组,和上面一样的步骤
4、创建一个新的库(Repository)
4.1、创建
4.2、选择FSFS类型
4.3、创建库的名字
4.4、选择是空库,还是之前库的分支
4.5、选择自定义权限
4.6、为不同的组分配权限
这样admin组的所有用户,都有了 读/写 bbs_demo库中文件的权限
同样,guest组中也给上读/写权限。
注意:我这里的分组只是为了后面的测试区分,真正的应用中,guest用户组不应该有写的权限
4.7、创建完成,显示库的相关信息
点击这个URL地址,我们已经可以通过网络访问库了
注意:由于这里是在我本机上测试,这里的URL地址中yingside3f02
其实就是指本机,所以,这里可以使用IP地址替代,比如可以改为127.0.0.1,或者localhost。
由于这里生成的连接是https的,使用chrome浏览器访问可能有警告,无所谓,跳过就可以了
以后,在客户端访问的时候,也就是这个地址了,当然如果是局域网,改成相应的IP地址就ok了 这样,一个空的服务器端目录就建立好了。建议重新启动一下计算机
二、TortoiseSVN的安装与配置
1、TortoiseSVN 下载地址:https://tortoisesvn.net/downloads.html
2、TortoiseSVN安装
安装完成之后强烈建议重新启动计算机,这样SVN的图标提醒才会起作用
3、TortoiseSVN的使用
3.1、基本测试
3.1.1、创建一个空文件夹,在文件夹中右键选择SVN Checkout
3.1.2、指定svn库地址
3.1.3、https证书授权
由于是https的访问,所以需要授权证书
3.1.4、用户登录
以administrator身份登录,这样才有远程库的读/写权限
3.1.5、完成后没有反应,其实打开隐藏文件显示,在该文件夹下已经生成了一个.svn的隐藏文件
3.1.6、上传本地文件到远程库中
(1)、在该文件夹下随便新建一个文件进行测试
(2)、SVN Commit
在远程库中,已经可以看到上传的文件
3.2、再次测试
3.2.1、在一个新文件夹中再次SVN Checkout
3.2.2、选择远程库位置,以及本地checkout文件夹
远程库中已有文件被下载到本地库中
3.2.3、执行新的Commit操作
注意:在Commit之前,我删除了Test.txt文件
3.2.4、执行新的操作
再次执行操作,在这次的操作中,我删除了一个文件,新增了一个文件,并且还修改了一个文件中的内容,再次提交,查看一下变化
3.3、版本的回退
由于我们已经提交了几个版本,比如上一个版本的提交有问题,可以使用版本的回退
3.3.1、查看版本日志
3.3.2、回退版本
在日志中可以看到已经提交的几次版本
选择我们要回退的版本
3.3.3、回退版本的提交
注意现在的回退的版本还是在本地,我们做出相应的修改之后,需要再次提交版本,比如:这里我再重新修改Test.java文件,BBSstyle2.css文件不再删除,而index.html文件也不再创建
3.4、更新
更新其实就是和远程库同步,这个一般在多人开发的时候,每天都需要执行的步骤,直接点击SVN Update从服务器下载最新的版本内容
3.4、切换用户
默认当第一次登陆时,TortoiseSVN会自动帮我们保存登陆的用户名和密码,如果需要修改,可以按照下面的方式
清除掉之前登录的记录
使用新用户在新的文件夹中重新执行SVN Checkout
我们不点击记录登录信息,方便我们做测试
为了解释下面冲突的问题。BBS文件夹我们使用administrator用户操作,BBS2文件夹使用guest_1文件操作
3.5、冲突
3.5.1、引起冲突的操作
如果多人开发,并且同时修改同一个文件,很容易引起版本的冲突
但是无论怎么样,多人开发,每次开发前的第一件事情,是进行SVN Update 保证本地的版本,与远程库的版本保持一致,如果在版本不一致的情况下进行开发,会导致很多问题
首先,BBS与BBS2文件夹都保证在了同一版本下。简单来说,有两个开发人员都在开发BBS项目,都update了远程库的内容
比如,admin修改了Test.java文件并上传提交了版本
administrator用户修改之后,已经更新了版本 5
同时,guest_1用户也在原来的 4 的版本上对Test.java文件进行了修改
但是,这个时候就会报错了
很明显,因为之前administrator用户已经更新了版本修改了Test.java,导致你修改的这个文件提交不上了。
这个时候不要乱操作,因为就算你的修改不重要,也不能随意的删除这些文件,因为你的操作最后都需要和远程库同步
3.5.2、解决办法
(1)、首先同步服务器版本
很明显,服务器版本中的Test.java与你自己已经修改的Test.java产生了冲突。 在Test.java文件夹中出现了下面几个新文件 打开Test.java文件
(2)、Edit conflicts编辑冲突
Theirs -- 窗口为服务器上当前最新版本
Mine -- 窗口为本地修改后的版本
Merged -- 窗口为合并后的文件内容显示
如果要使用服务器版本,在Theirs窗口选中差异内容,右键,选择Use this text block(使用这段文本块)。
同理如果要使用本地版本,在协商后,在Mine窗口右键,选择Use this text block(使用这段文本块)。
当然也可以使用下面两个选项,意思就是一个在前,一个在后,我们选择最后一个,意思是服务器版本在前,自己的版本在后
选择之后变成下面这个样子:
点击右上角保存。
(3)、Resolved解决冲突
3.6、如何降低冲突解决的复杂度
1、当文档编辑完成后,尽快提交,频繁的提交/更新可以降低在冲突发生的概率,以及发生时解决冲突的复杂度。
2、在提交时,写上明确的message,方便以后查找用户更新的原因,毕竟随着时间的推移,对当初更新的原因有可能会遗忘
3、养成良好的使用习惯,使用SVN时每次都是先提交,后更新。每天早上打开后,首先要从版本库获取最新版本。每天下班前必须将已经编辑过的文档都提交到版本库。
四、IDEA中配置SVN
4.1、本地已有项目工程与远程库关联
4.1.1、配置SVN远程库
当然前提是必须先有一个SVN远程库 我已经重新配置了一个新的SVN远程库,并配置了用户组admin
4.1.2、IDEA配置远程SVN库
4.1.3、添加远程SVN库地址与用户
4.1.4、本地目录与远程SVN库关联
由于远程库中没有内容,这里看不到任何变化,可以直接先Checkout,让本地文件与远程库关联
4.1.5、选择本地的目标地址
4.1.6、确认远程库与本地库关联的路径
4.1.7、确认格式化版本
4.1.8、重新打开工程
点击确定和本地目录会与远程库关联,要求重新打开,由于我们远程本来就是一个空的库,选择在本地重新打开就ok,打开之后还是在原来的BBS目录下
4.1.9、选择提交,将本地的程序提交到SVN库
等待提交
4.1.10、IDEA分析
IDEA会将代码进行分析再上传,对于一些有问题的,或者没有处理的代码,IDEA会提出警告⚠️
你可以回看一下这些问题,或者无论如何都提交
4.1.11、IDEA中再次修改
提交完成之后,每次代码的修改或者新增删除,在IDEA中都会有及时的显示
Comments