摘要
TortoiseSVN:1.14.1
IntelliJ IDEA 2019.2.3
# 一:IDEA配置SVN
在idea的setting中,选择自己本地安装SVN的svn.exe文件的绝对路径
# 二:IDEA拉取SVN项目
打开IDEA工具,选择Check out from Version Control,选择SubVersion
新增svn仓库地址
选择需要拉取的svn目录,点击CheckOut,再选择要存放在本地哪个目录下即可,之后全部选择默认即可。
最后结果打开的项目,相关svn的标志都已点亮,即已连接上SVN
# 三:SVN项目提交
当对项目文件进行修改后,需要提交工作内容时,
一定要切记,先更新(update),再提交(commit),防止有更新造成项目损失
点击提交按钮,会让我们选择提交哪些文件,注意填写提交信息,最后点击commit选择提交
格式化代码不要随便勾选,只格式化自己的代码就行,项目多人维护,一旦代码冲突,解决起来将会是一大片一大片的
对于新增的文件,如果没自动加到SVN提交队列中,需要手动选择add,选择需要add的文件,右键,选择SubVersion,选择Add to VCS,最后文件的颜色会从棕褐色变成绿色
# 四:Version Control
下面讲解Idea下的Version Control面板
# 4.1. 面板显示
如果没有看到Version Control
面板,需要在Tool Window
中展示出来
# 4.2. Local Changes
可以查看修改的文件,以及不需要版本控制的文件
分列表存放
我们经常在工作时,往往在处理新任务时,有时候又得去另外的任务支援,或者临时修复其他bug等。这时候Local Changes就会异常的多,如下图,实际工作项目的Local Changes面板
这时候可以按照自己想法分列表存放,以便把任务一个个分开,做完一个提交一个。而不是在提交的时候,再仔细找哪个和哪个是一个任务,然后再提交。
新增列表,如下示:
填入一个易于理解(或任务)名字
可以看到,如下图所示,新增了三个列表
建好列表之后,可以选择对应的文件,右键选择移动到其他列表,也可以使用Alt + Shift + M
快捷键直接到选择列表界面。(可以灵活使用Shift
或Ctrl
选中多个,同时进行移动)
最后结果如下图所示:
在提交的时候选择不同的列表即可
# 4.3. Repository
查看提交记录
# 4.4. Incoming
到目前为止,本地还没有更新别人提交的代码。
更新到指定版本的代码
选择Incoming
面板,选择拉取代码,勾上Update/Switch to specific revision
revision后面为HEAD
,默认为最新,更新全部,点击后面的文件夹图标,可以弹出查看Changes Browser
窗口,选择reversion为33
的版本,点击确定,
最后可以看到reversion为33
之前的所有版本都从svn远程仓库更新到本地了
上面配置测试完,记得把版本改回HEAD,或者把Update/Switch to specific revision前面的勾去掉,不然下次会以测试的配置为默认
# 4.5. Subversion Working Copies Information
SVN信息描述,具体可以看下图
# 五:代码冲突
当点击更新项目功能(或使用快捷键Ctrl + T
)时,从远程仓库获取最新代码,这时候如果有文件发生了代码冲突,如下图
一般遇到这种情况,基本使用Merge,得对比本地和远程的差别,点击Merge...
可以看到,弹出一个对比窗口。
合并完代码后,点击apply,就算解决完冲突了
# 六:Merge
主要两种情况,一种A分支合并到B分支;一种更新代码,代码冲突的时候。
其实不管哪种,重点要搞清楚from和to。
# 6.1. 准备动作
为了避免合并失败,报错。最好,先做一下准备动作。clean一下,refresh一下,然后再把这个to的目的地项目,也就是代码要合并的项目,svn更新一下。保证这个to项目是和svn版本库是一致的。
# 6.2. 配置分支
如果是首次合并分支,在合并之前,需要先配置分支信息,选择Configure Branches
,新增分支路径
# 6.3. 合并操作
选Merge From
就是从哪里,合并代码到当前正在打开的这个项目来。trunk就是主干。这里选择merge到dev路径,可以看到扫描出此路径下的项目分支,选择一个分支项目,选择之前可以点击Refresh Branches
重新刷新。
【Merge All】全部合并:自动检测全部没有合并的版本
【Quick Manual Select】快速手动选择:展示分支所有提交的版本数据,包括已合并和未合并的。非常快【推荐】
【Select With Pre-Filter】按预设的选择:大致意思是 仅加载尚未合并的修订版本以供选择。很慢。
选择Quick Manual Select
,选择要合并的提交,在最前面打勾就好。选完之后,点击merge selected
继续,
注意:每条记录前面的图标,带问号,表示没有合并过,合并过的,会变成有绿色加号的。
合并成功后,提交理由自动写好,要是没问题,可以直接commit,要是不确定,可以先cancel,然后本地查看对比,再提交
提交完成之后,可以在Local Changes
这一栏看到多了一个Merge from xxxx
分类,用完可以直接删掉。
注意:这里別选错了,默认选择了Default Changelist
最后可以在Repository
查看最新的merge提交记录
# 七:发布项目至SVN
如果项目在本地,之前并没有初始化为SVN,更没有提交过到SVN仓库,现在需要将这个项目作为一个svn新项目,来提交到SVN仓库应该如何做?
# 7.1. 本地项目svn初始化
在菜单栏中找到VCS
,选择Enable Version Control Integration...
选择SubVersion
# 7.2. 提交项目到远程仓库
菜单栏找到VCS,选择Import into Version Control,最后选择Import Into Subversion
选择需要提交的远程仓库位置
最后选择需要提交项目的本地位置,以及首次提交的提交信息
可以在TortoiseSVN
的Repository Browser
验证是否提交成功
# 八:其他小技巧
# 8.1. Annotate
选择一个文件,在左边行数右键,可以看到默认Annotate是没打勾的,如下图示:
将Annotate选中,打上勾,可以看到每一行代码最后的提交者和日期,当鼠标移动到某一行提交记录时,可以看到提交理由
鼠标移动到某一行提交记录,鼠标左键单击一次,即可查看当时提交了哪些文件,也可以直接做对比,提交都做了哪些修改
# 8.2. 新增代码
在已经修改的地方可以看到一段绿色柱状条,鼠标左键单击,可以弹出相关菜单功能,如下图所示:
# 8.3. 常用配置
一些比较常用配置相关的内容
当新增和删除,IDEA默认会提示,是否新增/删除在SVN库,这个提示可以设置默认,建议,还是选择提示,如下所示:
定时自动检测,远程仓库是否有开发者新提交代码