SVN学习笔记

看过最详细的视频,一天就学会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。
相关推荐
05664626 分钟前
Python高级——迭代器
开发语言·python·学习
math_hongfan39 分钟前
鸿蒙Agent高级技能自定义开发:自定义意图服务/能力注册/Agent技能编排/服务插件开发实战
android·学习·华为·harmonyos·鸿蒙
way_hj1 小时前
Flask笔记(2)快速web项目
笔记·flask·vue·web
duhong20261 小时前
Linux刷题记录第一套
学习
AI 小老六1 小时前
Agent Runtime 如何用 Session、Memory、User Profile 和 Skill 实现外部学习
服务器·人工智能·学习·ai·架构·自动化
又折桃枝换酒钱1 小时前
CycleChart:一个统一的基于一致性学习的双向图表理解与生成框架(翻译与解读)
人工智能·深度学习·学习
宵时待雨1 小时前
linux笔记归纳14:Socket编程TCP
linux·服务器·网络·笔记·tcp/ip
什仙2 小时前
Maxwell:提取实体表面,用于扫掠。
笔记·学习·ansys·maxwell
小僧景贤2 小时前
嵌入式C语言 第十一篇:成长路线|嵌入式C工程师完整进阶学习路径(从零到工程级落地|含周期+实战项目)
c语言·开发语言·学习