看过最详细的视频,一天就学会SVN视频教程(程序员入职必备技能,零基础快速入门)
1 SVN的作用
全称subversion,用于工程设计中的版本管理,可以记录所有历史版本及其改动,方便回滚以及对比不同版本差异;同时方便多人更新同一个工程时的冲突管理。每次提交都会生成一个新版本号,一个文件的修改会使整个库 repository的版本号更新,但未更改的文件版本号不更新。每次提交时最好填写一下log。
2 安装配置
分为服务器和客户端两种,所有版本文件存放在服务器上,服务器可搭建在某台电脑上统一管理工程。服务器创建库,并管理哪些用户有哪些访问权限、设置分组。客户端俗称"小乌龟"。

3 SVN使用
checkout:
把SVN库中的工程第一次拉到本地映射的空间中(本地原本没有该工程),两者建立映射关系。

import:
把本地工程第一次上传到SVN对应位置,无需先放到本地映射空间中再add+submit(此时的import等效于add+commit)。导入后本地文件和SVN版本库没有关联,若要后续版本控制操作,还需要重新checkout获取工作副本到映射目录中。
commit:
提交本地映射空间中已有并修改过的文件。若要添加一个新文件时,先add再commit。每次commit前先update更新。
update:
把SVN上的文件同步到本地。将当前工作目录(右击调用update目录)及所有子目录下的文件,更新到版本库的最新版本(HEAD版本)。
本地映射文件夹中的一个文件已经修改,但是未submit,此时执行update不会被替换为SVN上的旧文件,具体规则如下:
- 若你本地修改的文件,服务器端该文件未被其他人修改过,执行svn update后,本地的修改内容会保留,不会被服务器的文件覆盖。
- 若服务器端该文件已经被其他人修改过,执行svn update时会提示冲突,SVN会将服务器最新版文件、你本地修改的文件、发生分歧前的版本文件都保存到本地,你需要手动解决冲突后,再执行svn resolved命令标记冲突已解决,之后才能继续提交代码。
Update to revision:
更新文件到某一个不是最新的版本上,HEAD为最新,可以用show log查看并选择版本。
add:
本地映射目录中新增的文件/文件夹,需要先add进入待提交状态,再commit到SVN上。用undo add撤销。import不能替代add直接把本地文件导入SVN对应目录下,二者在功能定位、使用场景上有明确区别:
- import:是将本地文件直接导入到SVN版本库中,导入后本地文件和SVN版本库没有关联,相当于一次性把文件"搬家"到版本库,之后如果要对这些文件进行版本控制操作,还需要重新checkout获取工作副本。
- add:是将本地已有的文件或目录纳入SVN的版本控制管理,文件会进入待提交状态,之后通过commit操作就能将文件同步到SVN服务器,本地文件会和SVN版本库建立关联,后续的修改、更新等操作都能在本地工作副本中完成。
conflict:
当本地文件和SVN服务器上的文件同时被修改,且修改内容不兼容时,若执行commit就会产生冲突报错。此时需要手动解决冲突,对冲突内容进行确认选择生成新文件,标记resolved再次commit才会成功。
merge:
合并冲突的两个文件,在解决冲突时会自动弹出merge界面,呈现两个文件的不同处,以及合并修改后的编辑界面。
resolved:
手动解决冲突后,标记已解决才能成功commit。冲突后映射文件夹中会出现多个版本的文件,resolved后自动删除。
revert:
把本地映射空间已修改未提交的文件退回到SVN中的版本。
copy URL to clipboard
复制粘贴方便路径填写。
diff ...
比较指定两个文件,或者比较当前文件与其上一版本的区别。
4 IDEA中集成SVN
安装客户端时安装相关插件,可以在编辑器界面上浏览并操作SVN,不必每次都进入映射文件夹下操作。不同代码编辑软件需要确认是否支持SVN。

在UEStudio的设置-集成式应用-version control systems-Subversion下可以设置关联SVN。
5 其它
- 图形界面的标记:!感叹号表示修改;+执行add;√与服务器版本同;
- repo-browser:查看SVN目录的浏览器,不必把SVN上所有文件都checkout到本地。用浏览器查到想要的文件夹再checkout到本地映射空间。
- 把多个文件压缩进一个压缩包提交SVN后,是以单个文件的形式管理压缩文件。
- "fully recursive"指检出操作时的一种深度选项,表示递归地检出完整的目录树,包括所有文件、子目录及其内容。
- 若一个工程只在SVN上有,想修改某个文件,要先把该文件checkout到本地映射目录,修改完成后再commit。
