小白带你走进版本控制工具(SVN)学习

1,810 阅读6分钟

现如今在多人协同开发软件的过程中,我们为了完成多个人同时对一个项目的跟进,使用了这种版本控制工具进行开发

1、 一张图带你走进svn的世界

基本命令

  • checkout 第一次访问服务器,并且下载服务器上的资源文件
  • commit 将本地的资源内容提交至服务器上
  • update 将本地的资源文件更新至服务器上的最新版本

2、下载windows下svn服务器VisualSVN

下载地址:subversion.apache.org/

  • 第一步:下载安装VisualSVN完成后,创建仓库

  • 第二步:创建可以访问仓库的用户(或者创建底下的用户组),并设置账号密码

  • 第三步:指定允许访问的权限

  • 第四步:复制仓库路径(重要)

  • 第五步:浏览器下(或者客户端工具)访问此路径,成功访问此仓库

3、下载安装客户端TortoiseSvn(与服务器端下载方式一致,官网下载

  • 第一步:安装完成之后,创建一个用户文件夹(小刘)浏览仓库

  • 第二步:填写仓库路径,输入账号密码

  • 第三步:小刘用户checkout下载仓库文件,并生成下载好的隐藏文件

  • 第四步:小刘创建文件,并且将文件add(添加)到本地仓库

  • 第五步:进行commit操作(提交到服务器),并记录日志

  • 第六步:重新新建一个用户文件夹(小王),执行第一、二、三步操作,进行下载小刘的文件

  • 第七步:更新指定历史版本show log->选择想要的版本->update

  • 第八步:删除文件,此时通过delete操作只是本地删除,服务器还保存着,必须commit服务器才能彻底删除

  • 第九步:导入(将本地文件导入到svn文件中)导出(导出仓库到本地)

导出和checkout的区别:仓库中没有.svn隐藏文件

4、TortoiseSvn冲突

原因描述:小刘创建了文件并提交,为10版本,小王更新了下服务器,拿到了小刘的10版本文件,小流修改了文件,并进行了提交,版本号变成了11,小王在之前的版本10下也修改了下文件,并提交,产生错误,(小刘已经提交了版本11,小王又提交版本11,产生了冲突)通过解决冲突后,小王才可以继续提交至12版本

在本地下载下来的文件会合并两人修改的操作内容和之前的文件内容,本地中也会有之前相对应的版本文件

5、解决冲突

  • 点击从服务器下载下来的文件并编辑冲突
  • 三个区域,服务器 本地 合并后 (然后点击 save -> Make as resolved(表明已经解决冲突))

6、避免冲突

在开发过程中尽量避免冲突,具体操作如下

每次在修改提交代码之前先进行update操作,让本地和服务器保持一致,这样就可以避免产生冲突了。

7、在IDEA中设置svn

  • 先安装TortoiseSvn客户端可视化软件

  • 再设置IDEA

    • File->settings->Subversion->svn.exe的安装目录(TortoiseSvn->bin->svn.exe)

这样在idea中就配置成功了

要将项目上传到服务器端前,先要在svn服务器VisualSVN工具根据上面第二步创建仓库

  • IDEA中SVN基本使用
    • share project

按照此步骤操作后,将刚才在服务器端创建的仓库地址复制粘贴到此处

,选择分享目录,点击ok

出现此图标则为上传成功

图标具体作用

项目上传至SVN服务器之后会出现几个按钮

此时服务器是一个空文件夹,需要commit操作

右键项目->Subversion->Commit Directory(或者选择commit图标),写日志,提交

如果我们提交到服务器端的项目被其他客户端下载并修改提交了文件,此时需要在idea中Update Directory,才能看到修改后的文件

idae也可以直接在服务器端checkout一个项目,具体步骤如下:

  • 选择vcs->checkout from version control->subversion
  • 选择下载的工程

  • 选择保存的位置

svn上传项目至服务器可以忽略一些不必要的文件

选择忽略的文件

  • 选项一:选择忽略的文件
  • 选项二:选择忽略的文件夹
  • 选项三:手写正则表达式(*.jar)
    idea中解决冲突: 一个开发人员a在idea中update了这个共享项目,另一个开发人员b也update了这个项目,a在idea中修改了项目的源码进行了commit,b也修改了源码进行了commit,此时出现了冲突,idea解决冲突如下:

show Diff 查看修改的代码->update project -> Merge -> a选择想要修改的源码进行合并 -> 重新commit -> b重新update -> b成工看见合并后的代码

svn目录结构:创建项目时选择single-project repository目录结构

子目录结构作用:

分支的定义规则:

打分支:

  • 一、先在服务器端复制主干目录
  • 二、在idea中 VCS -> share project -> 复制服务器主干路径 -> commit(提交)

此时服务器主干已经有内容了

  • 三、复制服务器的主干(其实复制的是地址),在客户端SVN里创建个用户,然后创建个主干文件夹,进入主干文件夹 -> TortoiseSVN Repo-browser -> 复制服务器地址 -> checkout(选择要下载服务器上的项目) 此时仓库主干上的内容就download下来了,接下来我们开始打分支。

  • 第四步:在刚才创建的主干下打分支 TortoiseSVN btanch/tag -> 选择分支,并按照分支定义规格填写To Path 此时服务器仓库分支下就有了内容了,我们的分支就创建好了

主干合并到分支:

修改当前项目内容,在idea中提交(commit)至仓库主干,现在想让主干合并到分支上,实现代码的一致性,操作如下:

  • 第一步:在客户端用户下创建个分支目录,然后复制服务器仓库的分支目录,在客户端分支下选择TortoiseSVN Repo-browser -> 复制服务仓库分支地址 -> checkout(将仓库的分支下载下来)

  • 第二步:要想将主干合并到分支上,首先保证主干是最新的(进入客户端的主干 ->update),进入分支选择TortoiseSVN Merge -> URL to merge from(选择仓库主干地址) Working Copy(选择客户端自己的分支路径) -> 出现红色感叹号,则表示合并成功(感叹号代表内容有修改)

8、在IDEA中具体使用SVN总结

  • 第一步:IDEA中配置SVN
  • 第二步:svn服务器端创建仓库,复制仓库地址
  • 第三步:分享project到svn服务器
  • 第四步:此时服务器是一个空文件夹,需要commit
  • 第五步:如果我们提交到服务器端的项目被其他客户端下载并修改提交了文件,此时需要在idea中Update Directory,才能看到修改后的文件
  • 要想在idea中直接下载svn服务器上的项目,参见7步骤
  • 第六步:要想忽略上传到服务器项目的一些不必要的文件,选择要忽略的文件即可
  • 第七步:idea中解决冲突