从零开始SVN(2)--Eclipse、Subclipse、分支开发

Eclipse使用 SVN 插件

插件的选择、安装

Eclipse 可以使用的 SVN 插件在市面上主要有两种:

  • Subversive:Eclipse 团队开发的插件
  • Subclipse:Apache 的 SVN 团队开发的插件。

博主试过了,2020-3 版的 Eclipse 没有可以用的 Subversive 版本,所以在这里选择安装 Subclipse。

Subclipse 的安装
  • 在 Eclipse 中的应用市场安装:
    image-20200515103730992

  • 搜索 Subclipse 并安装,一路默认 next,最后重启 Eclipse:
    image-20200515112519941

  • 创建资源库位置,即配置 SVN 服务器地址:

    • 切换透视图
      image-20200515115716938
    • 创建资源库位置
      image-20200515115825930
    • 配置 SVN 服务器的 URL 地址
      image-20200515120045373
  • 最后我们就可以看到服务器版本库中的内容:
    image-20200515120128305

某些文件不纳入版本控制

在 Window->Preferences->Team->Ignored Resources->Add Pattern 进行配置:
image-20200515120449361


常规的操作

基本的操作可以右键资源项目->Team->相关菜单项。

这里就演示下分享工程与检出工程。

分享工程(添加)
  1. 新建一个工程后,工程右键->Team->Share Project

  2. 版本控制工具选择 SVN
    image-20200515125556835

  3. 选个一个已有资源库或者创建新的资源库地址
    image-20200516191100498

  4. 跳转 Team Synhronize,右键工程进行提交
    image-20200515130540698

  5. 服务端便可以看到我们上传的工程
    image-20200515130627163


图标含义
image-20200515131356329
检出
  1. 在 Eclipse 中执行 import 操作
    image-20200515131600837
  2. 确认资源库位置后,下一步选择工程相应的目录
    image-20200516191317958
  3. 避免和本地项目名冲突,改名后 finish 检出项目
    image-20200515132031419
  4. 工程项目上右键,将检出的项目转换为 maven 项目
    image-20200515132218369

解决冲突

检出后本地有两个项目,相当于多个用户,而制造冲突与前文的方法类似,这里不再赘述。

文件过时:
image-20200515132745770

更新文件后出现冲突:
image-20200515132916896

解决冲突

  1. 冲突文件->右键->Team->Edit Conficts(编辑冲突)
  2. 在界面编辑框中修改至满意后关闭界面(save)
    image-20200515133250782
  3. 冲突文件->右键->Team->Mark as merged(标记已合并/标记为已解决)
    image-20200515133823770
    编辑后选择第一个,为编辑过则可以按照需要选择其他项。
  4. 最后提交

分支开发

概念与作用

前文介绍的不使用分支是多人之间的协作,而分支开发是团队或小组间的协作。
在版本控制过程中,可以通过多个分支同时推进项目多个不同功能的开发,任何一个分支上功能开发失败都不会对其他分支造成影响。

创建分支

相关目录

  • trunk:主干
  • branches:分支
  • tags:存放项目开发过程中的里程碑代码

在创建分支之前,需要在版本库中创建相关目录:
image-20200516191636484

创建代码分支

先创建一个工程,添加到 trunk 中
image-20200516191829692

项目->右键->Team->分支/标记
image-20200516191926826

一路 next->finish。
在这里插入图片描述


切换分支

项目->右键->Team->切换
image-20200516192022967

最终:
image-20200516133843812


合并分支
  1. 创建两个分支内容:
    image-20200516140840861

  2. 项目->右键->Team->合并
    image-20200516140756097
    将某个分支或主线上提交的多个revision间的变化合并到另外一个分支上


分支合并到主干

Merge a range of revisions方式

主干项目右键合并,选择 Merge a range of revisions 方式

  • form 选择需要合并的分支
    image-20200516161253093

  • 本地的主干会与该分支合并,然后将本地的主干提交
    image-20200516161537363


Merge two different trees方式

主干项目右键合并,选择 Merge two different trees 方式

合并的时候以选择的分支版本为主,如果选择的主干版本与分支版本有不同的地方,合并时主干部分将被删除

  • from 选择主干,需要找到最后一次同步时的版本,如果从没有同步过(第一次合并),则选择创建分支时的版本。
  • to 选择要合并的分支,使用分支最新版本就行了。

由于前文主干与pay分支合并后有新的文件,所以主干需要选择之前的版本
image-20200516164407860

本地的主干会与该分支合并,然后将本地的主干提交:
image-20200516164646296


主干到分支

主干与分支同步开发,需要将主干新增与修改同步到分支中来。

Merge a range of revisions方式

直接选择主干的最新版本即可:
image-20200516170353429

如图,本地的pay分支同步到了主干与Skin分支合并后的文件 Skin.java 以及新建的文件 Main2.java:
image-20200516170615349


Merge two different trees方式

  • from 选择分支最新版本
  • to 选择主干最新版本
    image-20200516192146604

如图,本地的skin分支同步到了主干与pay分支合并后的文件 Pay.java 以及新建的文件 Main2.java:
image-20200516173302459


权限管理

之前我们有在版本库中的 svnserve.conf 文件,修改过权限,使我们匿名的进行读写。

anon-access = write

//auth-access = write

//修改为如下

anon-access = none //设置后可查看历史记录

auth-access = write

还可以加入如下配置,指明配置文件:

password-db = passwd //指定设置用户名密码文件

authz-db = authz //分配权限的配置文件

之后我们就可以通过修改 passwd 文件设置用户名密码,以及通过 authz 文件进行权限的分配:
image-20200516174044534

passwd 文件

//官方的示例:

[users]

harry = harryssecret

sally = sallyssecret

//格式:用户名 = 密码

//以下用于测试

tom = 123456

jerry = 123123

authz文件

//官方的示例

[groups]

harry_and_sally = harry,sally

harry_sally_and_joe = harry,sally,&joe

//格式:用户组 = 用户,用户

//以下用于测试

mygroups = tom //用于测试

//======================================================

//官方例子

[/] //目录

harry = rw //格式:用户名 = 权限值

&joe = r //格式:@用户组 = 权限值

* = //除了授权的用户以外其他用户没有任何权限

//以下用于测试

@mygroups =rw

jerry = r

* =

保存以上的配置后,eclipse中重新连接就会需要我们输入用户名密码:
image-20200516175739588

使用 jerry 用户登陆,之后我们修改任意文件进行提交,就会出现权限不够的错误:
image-20200516180742539

而删除登陆过的用户信息,需要到如下目录的auth中删除相关文件:

C:\Users\MOKE\AppData\Roaming\Subversion\

最后我们测试 tom 用户,删除信息重新提交文件,会提示重新登陆:
image-20200516190849663

提交成功:
image-20200516181322270


历史记录

查看历史记录

项目/文件->右键->Team->显示资源历史记录(Show History):
image-20200516182903435

回到某一个历史记录
image-20200516183109914