05月28, 2019

SVN 手把手跟我做

SVN 手把手跟我做

一、VisualSVN-Server 的安装与基本配置

1、VisualSVN-Server 下载地址:https://www.visualsvn.com/

2.安装步骤

-w504 -w501 -w502 -w505 -w500 -w505 -w504 -w500 -w920

三、基本配置

3.1、首先配置groups,添加两个组,一个admin组,一个guest组

-w240

-w918

-w628

3.2、创建用户

-w225

-w363 -w364

3.3、为用户分配组

-w551 -w693

-w358

如果你想将guest_1用户分配入guest组,和上面一样的步骤 -w417

4、创建一个新的库(Repository)

4.1、创建

-w361

4.2、选择FSFS类型

-w511

4.3、创建库的名字

-w511

4.4、选择是空库,还是之前库的分支

-w512

4.5、选择自定义权限

-w511

4.6、为不同的组分配权限

-w655 -w517

这样admin组的所有用户,都有了 读/写 bbs_demo库中文件的权限 -w377

同样,guest组中也给上读/写权限。

注意:我这里的分组只是为了后面的测试区分,真正的应用中,guest用户组不应该有写的权限

4.7、创建完成,显示库的相关信息

-w513

点击这个URL地址,我们已经可以通过网络访问库了 -w934 -w1156

注意:由于这里是在我本机上测试,这里的URL地址中yingside3f02其实就是指本机,所以,这里可以使用IP地址替代,比如可以改为127.0.0.1,或者localhost。 由于这里生成的连接是https的,使用chrome浏览器访问可能有警告,无所谓,跳过就可以了 -w1028

以后,在客户端访问的时候,也就是这个地址了,当然如果是局域网,改成相应的IP地址就ok了 这样,一个空的服务器端目录就建立好了。建议重新启动一下计算机

二、TortoiseSVN的安装与配置

1、TortoiseSVN 下载地址:https://tortoisesvn.net/downloads.html

2、TortoiseSVN安装

-w505 -w503 -w506 -w506 -w503

安装完成之后强烈建议重新启动计算机,这样SVN的图标提醒才会起作用

3、TortoiseSVN的使用

3.1、基本测试

3.1.1、创建一个空文件夹,在文件夹中右键选择SVN Checkout

-w813

3.1.2、指定svn库地址

-w540

3.1.3、https证书授权

-w498

由于是https的访问,所以需要授权证书

3.1.4、用户登录

-w396

以administrator身份登录,这样才有远程库的读/写权限

3.1.5、完成后没有反应,其实打开隐藏文件显示,在该文件夹下已经生成了一个.svn的隐藏文件

-w734

3.1.6、上传本地文件到远程库中
(1)、在该文件夹下随便新建一个文件进行测试

-w731

(2)、SVN Commit

-w641 -w712 -w773 在远程库中,已经可以看到上传的文件 -w694

3.2、再次测试

3.2.1、在一个新文件夹中再次SVN Checkout

-w809

3.2.2、选择远程库位置,以及本地checkout文件夹

-w540 -w418

远程库中已有文件被下载到本地库中 -w642

3.2.3、执行新的Commit操作

注意:在Commit之前,我删除了Test.txt文件 -w741 -w773

3.2.4、执行新的操作

再次执行操作,在这次的操作中,我删除了一个文件,新增了一个文件,并且还修改了一个文件中的内容,再次提交,查看一下变化 -w707 -w737

-w773

3.3、版本的回退

由于我们已经提交了几个版本,比如上一个版本的提交有问题,可以使用版本的回退

3.3.1、查看版本日志

-w389

3.3.2、回退版本

在日志中可以看到已经提交的几次版本 -w751

选择我们要回退的版本 -w750 -w750 -w775

3.3.3、回退版本的提交

注意现在的回退的版本还是在本地,我们做出相应的修改之后,需要再次提交版本,比如:这里我再重新修改Test.java文件,BBSstyle2.css文件不再删除,而index.html文件也不再创建 -w741 -w775

3.4、更新

更新其实就是和远程库同步,这个一般在多人开发的时候,每天都需要执行的步骤,直接点击SVN Update从服务器下载最新的版本内容 -w220

3.4、切换用户

默认当第一次登陆时,TortoiseSVN会自动帮我们保存登陆的用户名和密码,如果需要修改,可以按照下面的方式 -w429

-w783

清除掉之前登录的记录 -w556

使用新用户在新的文件夹中重新执行SVN Checkout -w623 -w537

-w401 我们不点击记录登录信息,方便我们做测试 -w447

为了解释下面冲突的问题。BBS文件夹我们使用administrator用户操作,BBS2文件夹使用guest_1文件操作

3.5、冲突

3.5.1、引起冲突的操作

如果多人开发,并且同时修改同一个文件,很容易引起版本的冲突

但是无论怎么样,多人开发,每次开发前的第一件事情,是进行SVN Update 保证本地的版本,与远程库的版本保持一致,如果在版本不一致的情况下进行开发,会导致很多问题

首先,BBS与BBS2文件夹都保证在了同一版本下。简单来说,有两个开发人员都在开发BBS项目,都update了远程库的内容

比如,admin修改了Test.java文件并上传提交了版本 -w478 -w773

administrator用户修改之后,已经更新了版本 5

同时,guest_1用户也在原来的 4 的版本上对Test.java文件进行了修改 -w529

但是,这个时候就会报错了 -w775

很明显,因为之前administrator用户已经更新了版本修改了Test.java,导致你修改的这个文件提交不上了。

这个时候不要乱操作,因为就算你的修改不重要,也不能随意的删除这些文件,因为你的操作最后都需要和远程库同步

3.5.2、解决办法
(1)、首先同步服务器版本

-w515 -w773 很明显,服务器版本中的Test.java与你自己已经修改的Test.java产生了冲突。 在Test.java文件夹中出现了下面几个新文件 -w600 打开Test.java文件 -w832

(2)、Edit conflicts编辑冲突

-w636

-w1223 Theirs -- 窗口为服务器上当前最新版本

Mine -- 窗口为本地修改后的版本

Merged -- 窗口为合并后的文件内容显示

-w1227

如果要使用服务器版本,在Theirs窗口选中差异内容,右键,选择Use this text block(使用这段文本块)。

同理如果要使用本地版本,在协商后,在Mine窗口右键,选择Use this text block(使用这段文本块)。

当然也可以使用下面两个选项,意思就是一个在前,一个在后,我们选择最后一个,意思是服务器版本在前,自己的版本在后

选择之后变成下面这个样子: -w1224

点击右上角保存。 -w1265

(3)、Resolved解决冲突

-w463 -w741 -w771

3.6、如何降低冲突解决的复杂度

1、当文档编辑完成后,尽快提交,频繁的提交/更新可以降低在冲突发生的概率,以及发生时解决冲突的复杂度。

2、在提交时,写上明确的message,方便以后查找用户更新的原因,毕竟随着时间的推移,对当初更新的原因有可能会遗忘

3、养成良好的使用习惯,使用SVN时每次都是先提交,后更新。每天早上打开后,首先要从版本库获取最新版本。每天下班前必须将已经编辑过的文档都提交到版本库。

四、IDEA中配置SVN

4.1、本地已有项目工程与远程库关联

4.1.1、配置SVN远程库

当然前提是必须先有一个SVN远程库 我已经重新配置了一个新的SVN远程库,并配置了用户组admin -w466 -w539

4.1.2、IDEA配置远程SVN库

-w483

4.1.3、添加远程SVN库地址与用户

-w580

4.1.4、本地目录与远程SVN库关联

由于远程库中没有内容,这里看不到任何变化,可以直接先Checkout,让本地文件与远程库关联 -w483

4.1.5、选择本地的目标地址

-w433

4.1.6、确认远程库与本地库关联的路径

-w484

4.1.7、确认格式化版本

-w400

4.1.8、重新打开工程

点击确定和本地目录会与远程库关联,要求重新打开,由于我们远程本来就是一个空的库,选择在本地重新打开就ok,打开之后还是在原来的BBS目录下 -w666

4.1.9、选择提交,将本地的程序提交到SVN库

-w804

-w851 等待提交 -w847

4.1.10、IDEA分析

IDEA会将代码进行分析再上传,对于一些有问题的,或者没有处理的代码,IDEA会提出警告⚠️ -w288 -w336

你可以回看一下这些问题,或者无论如何都提交

4.1.11、IDEA中再次修改

提交完成之后,每次代码的修改或者新增删除,在IDEA中都会有及时的显示 -w636 -w940

4.2、直接将SVN已有工程导入到IDEA本地路径中

4.2.1、通过远程SVN创建新工程

-w626

4.2.2、选择远程SVN库

-w337

4.2.3、选择/创建本地目录

-w440

4.2.4、远程库与本地目录对应

-w484

4.2.5、相关配置

-w1164 5374/15590065350397.jpg) -w501 -w502 -w505 -w500 -w505 -w504 -w500 -w920

三、基本配置

3.1、首先配置groups,添加两个组,一个admin组,一个guest组

-w240

-w918

-w628

3.2、创建用户

-w225

-w363 -w364

3.3、为用户分配组

-w551 -w693

-w358

如果你想将guest_1用户分配入guest组,和上面一样的步骤 -w417

4、创建一个新的库(Repository)

4.1、创建

-w361

4.2、选择FSFS类型

-w511

4.3、创建库的名字

-w511

4.4、选择是空库,还是之前库的分支

-w512

4.5、选择自定义权限

-w511

4.6、为不同的组分配权限

-w655 -w517

这样admin组的所有用户,都有了 读/写 bbs_demo库中文件的权限 -w377

同样,guest组中也给上读/写权限。

注意:我这里的分组只是为了后面的测试区分,真正的应用中,guest用户组不应该有写的权限

4.7、创建完成,显示库的相关信息

-w513

点击这个URL地址,我们已经可以通过网络访问库了 -w934 -w1156

注意:由于这里是在我本机上测试,这里的URL地址中yingside3f02其实就是指本机,所以,这里可以使用IP地址替代,比如可以改为127.0.0.1,或者localhost。 由于这里生成的连接是https的,使用chrome浏览器访问可能有警告,无所谓,跳过就可以了 -w1028

以后,在客户端访问的时候,也就是这个地址了,当然如果是局域网,改成相应的IP地址就ok了 这样,一个空的服务器端目录就建立好了。建议重新启动一下计算机

二、TortoiseSVN的安装与配置

1、TortoiseSVN 下载地址:https://tortoisesvn.net/downloads.html

2、TortoiseSVN安装

-w505 -w503 -w506 -w506 -w503

安装完成之后强烈建议重新启动计算机,这样SVN的图标提醒才会起作用

3、TortoiseSVN的使用

3.1、基本测试

3.1.1、创建一个空文件夹,在文件夹中右键选择SVN Checkout

-w813

3.1.2、指定svn库地址

-w540

3.1.3、https证书授权

-w498

由于是https的访问,所以需要授权证书

3.1.4、用户登录

-w396

以administrator身份登录,这样才有远程库的读/写权限

3.1.5、完成后没有反应,其实打开隐藏文件显示,在该文件夹下已经生成了一个.svn的隐藏文件

-w734

3.1.6、上传本地文件到远程库中
(1)、在该文件夹下随便新建一个文件进行测试

-w731

(2)、SVN Commit

-w641 -w712 -w773 在远程库中,已经可以看到上传的文件 -w694

3.2、再次测试

3.2.1、在一个新文件夹中再次SVN Checkout

-w809

3.2.2、选择远程库位置,以及本地checkout文件夹

-w540 -w418

远程库中已有文件被下载到本地库中 -w642

3.2.3、执行新的Commit操作

注意:在Commit之前,我删除了Test.txt文件 -w741 -w773

3.2.4、执行新的操作

再次执行操作,在这次的操作中,我删除了一个文件,新增了一个文件,并且还修改了一个文件中的内容,再次提交,查看一下变化 -w707 -w737

-w773

3.3、版本的回退

由于我们已经提交了几个版本,比如上一个版本的提交有问题,可以使用版本的回退

3.3.1、查看版本日志

-w389

3.3.2、回退版本

在日志中可以看到已经提交的几次版本 -w751

选择我们要回退的版本 -w750 -w750 -w775

3.3.3、回退版本的提交

注意现在的回退的版本还是在本地,我们做出相应的修改之后,需要再次提交版本,比如:这里我再重新修改Test.java文件,BBSstyle2.css文件不再删除,而index.html文件也不再创建 -w741 -w775

3.4、更新

更新其实就是和远程库同步,这个一般在多人开发的时候,每天都需要执行的步骤,直接点击SVN Update从服务器下载最新的版本内容 -w220

3.4、切换用户

默认当第一次登陆时,TortoiseSVN会自动帮我们保存登陆的用户名和密码,如果需要修改,可以按照下面的方式 -w429

-w783

清除掉之前登录的记录 -w556

使用新用户在新的文件夹中重新执行SVN Checkout -w623 -w537

-w401 我们不点击记录登录信息,方便我们做测试 -w447

为了解释下面冲突的问题。BBS文件夹我们使用administrator用户操作,BBS2文件夹使用guest_1文件操作

3.5、冲突

3.5.1、引起冲突的操作

如果多人开发,并且同时修改同一个文件,很容易引起版本的冲突

但是无论怎么样,多人开发,每次开发前的第一件事情,是进行SVN Update 保证本地的版本,与远程库的版本保持一致,如果在版本不一致的情况下进行开发,会导致很多问题

首先,BBS与BBS2文件夹都保证在了同一版本下。简单来说,有两个开发人员都在开发BBS项目,都update了远程库的内容

比如,admin修改了Test.java文件并上传提交了版本 -w478 -w773

administrator用户修改之后,已经更新了版本 5

同时,guest_1用户也在原来的 4 的版本上对Test.java文件进行了修改 -w529

但是,这个时候就会报错了 -w775

很明显,因为之前administrator用户已经更新了版本修改了Test.java,导致你修改的这个文件提交不上了。

这个时候不要乱操作,因为就算你的修改不重要,也不能随意的删除这些文件,因为你的操作最后都需要和远程库同步

3.5.2、解决办法
(1)、首先同步服务器版本

-w515 -w773 很明显,服务器版本中的Test.java与你自己已经修改的Test.java产生了冲突。 在Test.java文件夹中出现了下面几个新文件 -w600 打开Test.java文件 -w832

(2)、Edit conflicts编辑冲突

-w636

-w1223 Theirs -- 窗口为服务器上当前最新版本

Mine -- 窗口为本地修改后的版本

Merged -- 窗口为合并后的文件内容显示

-w1227

如果要使用服务器版本,在Theirs窗口选中差异内容,右键,选择Use this text block(使用这段文本块)。

同理如果要使用本地版本,在协商后,在Mine窗口右键,选择Use this text block(使用这段文本块)。

当然也可以使用下面两个选项,意思就是一个在前,一个在后,我们选择最后一个,意思是服务器版本在前,自己的版本在后

选择之后变成下面这个样子: -w1224

点击右上角保存。 -w1265

(3)、Resolved解决冲突

-w463 -w741 -w771

3.6、如何降低冲突解决的复杂度

1、当文档编辑完成后,尽快提交,频繁的提交/更新可以降低在冲突发生的概率,以及发生时解决冲突的复杂度。

2、在提交时,写上明确的message,方便以后查找用户更新的原因,毕竟随着时间的推移,对当初更新的原因有可能会遗忘

3、养成良好的使用习惯,使用SVN时每次都是先提交,后更新。每天早上打开后,首先要从版本库获取最新版本。每天下班前必须将已经编辑过的文档都提交到版本库。

四、IDEA中配置SVN

4.1、本地已有项目工程与远程库关联

4.1.1、配置SVN远程库

当然前提是必须先有一个SVN远程库 我已经重新配置了一个新的SVN远程库,并配置了用户组admin -w466 -w539

4.1.2、IDEA配置远程SVN库

-w483

4.1.3、添加远程SVN库地址与用户

-w580

4.1.4、本地目录与远程SVN库关联

由于远程库中没有内容,这里看不到任何变化,可以直接先Checkout,让本地文件与远程库关联 -w483

4.1.5、选择本地的目标地址

-w433

4.1.6、确认远程库与本地库关联的路径

-w484

4.1.7、确认格式化版本

-w400

4.1.8、重新打开工程

点击确定和本地目录会与远程库关联,要求重新打开,由于我们远程本来就是一个空的库,选择在本地重新打开就ok,打开之后还是在原来的BBS目录下 -w666

4.1.9、选择提交,将本地的程序提交到SVN库

-w804

-w851 等待提交 -w847

4.1.10、IDEA分析

IDEA会将代码进行分析再上传,对于一些有问题的,或者没有处理的代码,IDEA会提出警告⚠️ -w288 -w336

你可以回看一下这些问题,或者无论如何都提交

4.1.11、IDEA中再次修改

提交完成之后,每次代码的修改或者新增删除,在IDEA中都会有及时的显示 -w636 -w940

4.2、直接将SVN已有工程导入到IDEA本地路径中

4.2.1、通过远程SVN创建新工程

-w626

4.2.2、选择远程SVN库

-w337

4.2.3、选择/创建本地目录

-w440

4.2.4、远程库与本地目录对应

-w484

4.2.5、相关配置

-w1164

本文链接:http://www.yanhongzhi.com/post/svn.html

-- EOF --

Comments