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\
⑥ 剩余步骤一路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
- 确认密码:由字母、下划线、数字组成,区分大小写,与密码保持一致
③ 此时在用户列表中,出现刚刚创建的用户:

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]提交了新内容到服务器:

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

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

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

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

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

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

⑧ 出现文件对比:

- 下半区域????很多问号的部分,即为冲突的内容,对应上左、上右的红色内容部分
- 将[上左]标记为【+】加号的内容、以及[上右]标记为【+】加号的内容,合并写入下半区域内容里即可
⑨ 调整完文件内容,点击左上角【保存】:

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

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

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