SVN操作

学习目标

  • 初步了解SVN
  • 安装SVN服务端
  • 安装SVN客户端
  • 完成SVN客户端汉化
  • 掌握服务端的基本操作
  • 掌握服务端的基本操作

1. SVN的介绍

SVN(Subversion)是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。

2. SVN的工作原理

特点:

  • 文件存放在中心版本库,记录每一次文件和目录的修改
  • 允许把数据恢复到早期版本,或是检查数据修改的历史
  • 可以通过同一局域网络访问它的版本库,从而使用户在不同的电脑上进行操作
  • 支持中文,图形化操作,简单易上手

流程:

  • [运维] 搭建SVN服务端
  • [员工A] 在本地安装SVN客户端
  • [运维] 提供“仓库地址”、“SVN账号”、“SVN密码”给[员工A]
  • [员工A] 在本地新建一个空文件夹,右键[SVN检出文件],即可获取SVN服务器上的文件
  • [员工A] 修改某些文件后,右键[SVN提交],即可将新版本文件上传至SVN服务器
  • [员工B] 想同步[员工A] 更新的文件,右键[SVN更新],即可获取最新版本文件

3. SVN与GIT的区别

1. 工作模式:

    ① git是分布式的,git跟SVN一样有自己的集中式版本库或服务器。但git更倾向于被使用于分布式模式, 也就是每个开发人员从中心版本库/服务器上checkout代码后会在自己的机器上克隆一个自己的版本库。Git的绝大多数操作都只需要访问本地文件和资源,不用连网。

    ② SVN集中式的,只能在同一局域网下进行操作。集中式指所有的文件全部集中在服务器上进行管理。SVN差不多所有操作都需要连接网络,局限性较高。

2. 安全性:

    ① [存储文件]方面,SVN更安全,因为使用局域网保存。

    ② [提交操作]方面,Git更安全。

    ③ [文件备份]方面,Git更安全,更易恢复文件。

4. SVN下载地址

  • Virtual SVN服务端下载地址:https://www.visualsvn.com/
  • Tortoise SVN客户端下载地址:https://tortoisesvn.net/
  • 客户端汉化包下载地址:https://osdn.net/projects/tortoisesvn/storage/

5. 安装SVN服务端

① 在群里下载SVN Server(SVN服务端)的安装包:


② 在欢迎界面,点击Next(下一步):


③ 同意用户协议,点击Next(下一步):


④ 默认组件即可,直接点击Next(下一步):


⑤ 初始服务器配置,三个路径都要改到非C盘,且路径中不要包含中文,再点击Next(下一步):


  • Location是指svnServer安装路径:改到非C盘,如:D:\SVNServer
  • Repositories是指库的根目录:改到非C盘,和[安装路径]不要在同一个文件夹里,如:D:\Repositories\
  • Server port是端口号:默认即可
  • Backups是备份路径:改到非C盘,和[安装路径]、[根目录]不要在同一个文件夹里,如:D:\Backups\
记得将安装路径、根目录、备份路径 记录在path文件里

⑥ 剩余步骤一路Next(下一步)即可,直到出现安装成功界面,点击Finish(完成):


⑦ 点开电脑的【开始】图标,若出现以下图标,则表示安装成功:


6. 安装SVN客户端

① 在群里下载TortoiseSVN(SVN客户端)的安装包:


② 在欢迎界面,点击Next(下一步):


③ 阅读用户许可协议,点击Next(下一步):


④ 点击Browse(浏览),选择非C盘的安装路径,再点击Next(下一步):


记得将安装路径 记录在path文件里

⑤ 点击Install(安装):


⑥ 等待安装中...


⑦ 安装成功,点击Finish(完成)即可:


⑧ 回到桌面,右键,出现以下图标,表示安装成功:


7. 客户端汉化

① 在群里下载LanguagePack(语言包)的安装包:


② 在向导界面,点击下一步:


③ 等待安装中...


④ 安装成功后,勾选Configure TortoiseSVN to use this language(给TortoiseSVN配置该语言):


⑤ 回到桌面,右键,出现以“SVN检出”则表示汉化成功:


8. 服务端-创建User用户

① 在左侧树状目录的[Users(用户)]上右键,选择 Create User:


② 输入用户名、密码、确认密码,点击ok即可:


  • 用户名:由字母、下划线、数字组成,区分大小写,建议用自己名字的拼音
  • 密码:由字母、下划线、数字组成,区分大小写,建议用:123456
  • 确认密码:由字母、下划线、数字组成,区分大小写,与密码保持一致
记得在account文本里记录下账号,标注“本地svn客户端登录账号”

③ 此时在用户列表中,出现刚刚创建的用户:


9. 服务端-User用户的其他操作

· 修改用户密码:


· 挂起用户,令该账户无法使用:


· 启用用户,令该账户恢复使用:


10. 服务端-创建Groups组

① 在左侧树状目录的[Groups(组)]上右键,选择 Create Group:


② 输入Group Name(组名),点击ok即可:


  • 创建一个新组时,默认没有成员
  • 可以点击[Add]按钮添加成员,也可以后续再添加

③ 此时再组的列表中,出现刚刚创建的组:


11. 服务端-给组添加成员

① 组名上右键,选择Edit(编辑):


② 点击Add(添加):


③ 选择需要添加的[组]或[用户],点击ok即可:


  • 选择某一组:相当于将[所选的组] 设置为 [当前组]的下级组
  • 选择某一用户:相当于将[所选的用户] 设置为 [当前组]的成员

12. 服务端-创建Repository仓库

① 打开SVN服务端后,在左侧树状目录的[Repository(仓库)]上右键,选择 Create New Repository:


② 仓库类型选择默认Regular FSFS repository(FSFS常规存储):


③ 取一个仓库名称,不要写中文:


④ 仓库结构选择Empty repository(空仓库):


⑤ 仓库权限配置选择All Subversion users have Read/Write access(所有svn用户都有读写权限),点击Create(创建):


⑥ 出现创建成功界面,可以复制一下仓库地址:


记得在account文本里记录该地址,标注“本地svn仓库地址”

⑦ 此时在左侧树状目录的[Repository(仓库)]下出现刚刚创建的仓库:


13. 服务端-更改仓库权限

① 在左侧树状目录的[Repository(仓库)]-->[仓库名]上右键,选择Properties(所有权):


② 可更改Everyone(所有人)的权限:


③ 点击[Add],也可以添加其他的用户访问权限:


④ 选中具体某个用户,单独对他进行权限管理:


注意:不要给相同的用户配置不同的权限,避免权限冲突

14. 服务端-仓库其他操作

·复制仓库地址:


·使用浏览器管理仓库文件:


15. 客户端-首次导出服务器的文件

① 在本地新建一个空文件夹,用于接收svn的文件:


② 在空白处右键,选择“SVN检出”:


③ 填入版本库的URL,点击【确定】:


④ 若弹出“证书认证失败”,则选择【永久接受该证书】:


⑤ 输入在服务端创建的用户名和密码:


⑥ 文件夹中会出现一个名为“.svn”的隐藏文件,并弹出如下弹窗:


若服务器上有其他文件,也会一起同步到本地

16. 客户端-本地文件上传服务器

① 在文件夹新建一个文档:


新建未上传的文档,会标记一个蓝色问号

② 右键选择[SVN提交]:


③ 填写描述信息、勾选需要上传的文件,点击[确定]:


④ 弹出提交完成提示框,表示上传成功:


⑤ 此时文档会标记一个蓝色加号,表示已新增成功:


⑥ 此时到SVN服务器上,刷新后,可看到上传的文件:


17. 客户端-修改文件后同步至服务器

① 任意修改一个文档内容:


修改未同步的文档,会标记一个红色感叹号

② 右键选择[SVN提交]:


③ 在提交框内,双击文件名,可对比文档修改前后的内容:



④ 填写描述信息、勾选需要同步的文件,点击[确定]:


⑤ 弹出提交完成提示框,表示同步成功:


⑥ 此时文档会标记一个绿色勾号,表示已同步成功:


18. 客户端-回退版本

① 在文件夹内右键,选择TortoiseSVN→更新至版本:


② 可选择[显示日志]查看历史的版本信息记录:


③ 在此处可查看到对应的历史版本号:


④ 填入对应的版本号,点击[确定]:


⑤ 出现“更新完成”提示框,则表示回退成功:


⑥ 此时再打开文档,发现内容已回退:


19. 客户端-同步服务器上的文件

① 在文件夹内右键,选择SVN更新:


② 出现更新成功弹窗,并标注当前服务器上的最新版本:


③ 再次打开文件,发现内容已更新至最新版本:


若服务器上有其他文件,也会一起同步到本地

20. 客户端-解决文件冲突

假设[同事A]和你同时修改了一个文件,[同事A]往文件中新内容,并已将文件上传至服务器。此时你也往文件里添加了新内容,准备提交时,SVN会告诉你存在文件冲突。

① [同事A]提交了新内容到服务器:


② 你也改了文件,准备提交到服务器:


③ 此时发现提交失败,点击【确定】:


④ 弹出“命令失败”弹窗,点击【更新】:


⑤ 弹出“更新完成”弹窗,并提示你存在文件冲突,点击【确定】:


⑥ 此时文件会出现黄色感叹号图标(冲突),以及多个历史版本的同名文件副本:


⑦ 再一次提交文件,在提交弹窗里,双击文件名:


⑧ 出现文件对比:


  • 下半区域????很多问号的部分,即为冲突的内容,对应上左、上右的红色内容部分
  • 将[上左]标记为【+】加号的内容、以及[上右]标记为【+】加号的内容,合并写入下半区域内容里即可

⑨ 调整完文件内容,点击左上角【保存】:


⑩ 出现“文件没有冲突”弹窗,选择[标记为解决]:


⑪ 此时本地文件夹的文件标记为红色感叹号(修改未上传),且其他历史版本副本已消失:


⑫ 再一次右键提交,即可提交成功: