版本控制系统-SVN

SVN

Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统。

官网:https://subversion.apache.org
资料:https://svnbook.red-bean.com、https://www.runoob.com/svn/svn-tutorial.html
下载:https://sourceforge.net/projects/win32svn/

与git对比

SVN(Subversion)和Git都是版本控制工具,它们的作用都是帮助程序员管理和追踪代码的变化。以下是两者的主要区别:

  • 分布式和集中式
    Git是一种分布式版本控制系统,每个开发者都有一个完整的代码库。开发者可以在本地创建、提交和合并分支,而不需要连接到中央服务器。这意味着,即使断开与中央服务器的连接,开发者仍然可以继续工作。相比之下,SVN是一种集中式版本控制系统,代码库保存在中央服务器上,每个开发者都从中央服务器获取代码,并将更改提交到中央服务器。

  • 分支和合并
    在Git中,分支和合并是非常简单和快速的。开发者可以轻松地创建和合并分支,这使得并行开发和测试变得容易。相反,在SVN中,分支和合并通常需要复制和合并文件夹,这可能会导致冲突和错误,并且需要大量的手动操作。

  • 性能
    Git通常比SVN更快,特别是在执行诸如提交和拉取等操作时。这主要是因为Git是分布式的,可以在本地缓存文件,而SVN是集中式的,需要连接到中央服务器进行操作。

概念

  • 仓库(Repository):仓库是SVN中存储代码和版本历史记录的地方。它是一个集中存储代码的服务器。
  • 版本(Revision):版本表示代码仓库的一个特定状态,每个提交操作都会创建一个新版本。每个版本都有一个唯一的标识符,通常用一个递增的数字表示。
  • 工作副本(Working Copy):工作副本是从SVN仓库中取出的代码的本地副本。开发者在工作副本中进行修改、添加和删除文件,并通过提交操作将这些更改同步到仓库。
  • 提交(Commit):提交是将工作副本中的更改应用到SVN仓库的操作。提交会创建一个新的版本,并将工作副本中的更改记录到该版本中。
  • 更新(Update):更新是将仓库中的最新代码更新到工作副本的操作。更新操作会将仓库中的最新版本与工作副本进行比较,并将差异部分合并到工作副本中。
  • 分支(Branch):分支是将代码库分成独立的开发线路的操作。通过创建分支,可以在不影响主干代码的情况下进行并行开发、实验或修复。
  • 合并(Merge):合并是将一个分支的更改合并到另一个分支或主干的操作。合并可以将不同分支上的代码更改整合到一起,确保所有修改都被应用。

工具

客户端UI工具:

  • TortoiseSVN:适用于Windows操作系统的图形化界面工具,集成在资源管理器中,可直观地进行版本控制操作。
  • SmartSVN:跨平台的SVN客户端工具,提供可视化界面和强大的功能,支持Windows、Mac和Linux操作系统。
  • Cornerstone:适用于Mac操作系统的SVN客户端,提供直观的用户界面和易用的版本控制功能。
  • RapidSVN:跨平台的SVN客户端,提供简单易用的界面和常用的版本控制功能。

Web端UI工具:

  • VisualSVN Server Manager:适用于Windows操作系统的SVN服务器管理工具,提供基于Web的用户界面,可以管理SVN仓库、权限和用户等。
  • RhodeCode:一个开源的SVN和Git版本控制系统,提供Web界面来管理代码仓库、用户权限和团队协作。
  • ViewVC:一个基于Web的SVN仓库浏览工具,提供源代码的查看、比较和检索等功能。
  • WebSVN:一个基于Web的SVN仓库浏览工具,提供类似文件浏览器的界面,可以查看代码和历史记录。

一般流程

  1. 创建仓库(Repository):首先,在SVN服务器上创建一个仓库,用于存储代码和版本历史记录。

在这里插入图片描述

  1. 检出工作副本(Checkout):在本地机器上执行检出操作,将仓库中的代码复制到本地,创建一个工作副本。这个工作副本是你在本地进行修改和操作的副本。
    在这里插入图片描述
    在这里插入图片描述
    这是典型的SVN仓库结构,其中各目录的作用如下:

    branches(分支):该目录用于存放代码的分支。在软件开发中,分支常被用于并行开发、实验和修复工作。创建分支可以让团队成员在独立的代码线上进行开发,避免干扰主干(trunk)上的稳定代码。一般情况下,每个分支都有自己的文件夹,并且可以独立进行版本控制。

在这里插入图片描述

tags(标签):该目录用于存放代码的标签。标签通常用于标记项目的里程碑版本、发布版本或重要的版本点。在某个特定时间点,将代码的一个快照副本标记为一个标签,以便后续随时查阅和回滚到该版本。标签一般不可修改,用于保留历史记录和实现版本的可追溯性。trunk(主干):该目录用于存放主要的开发代码。主干是项目的核心部分,包含最新的稳定版本和功能。大多数开发工作都在主干上进行,团队成员在这里共享和协同开发代码。主干上的代码会随着时间推移不断更新和演进。通过这种目录结构,SVN提供了一种组织代码和版本控制的方法。分支和标签的目录可以帮助团队进行并行开发和管理重要版本,而主干目录则是项目的主要代码存储区。这样的结构有助于团队协作、版本控制和代码的可追溯性。
  1. 修改文件(Modify):在工作副本中进行代码的修改、添加和删除操作,根据需求进行开发或修复。

  2. 更新工作副本(Update):当其他人提交了新的代码到仓库时,你需要执行更新操作,将仓库中的最新代码更新到你的工作副本中。这样可以保持你的工作副本与仓库同步。
    在这里插入图片描述

  3. 解决冲突(Resolve Conflict):如果在更新操作中遇到冲突,即你和其他人对同一代码部分进行了不兼容的修改,你需要解决冲突。SVN会尝试自动合并不冲突的部分,但对于冲突的部分,你需要手动解决。

  4. 提交修改(Commit):当你完成对代码的修改后,需要执行提交操作,将你的修改应用到仓库中。提交会创建一个新的版本,并将你的修改记录到该版本中。

  5. 分支和合并(Branch and Merge):如果需要进行并行开发、实验或修复,可以创建分支。分支允许你在不影响主干代码的情况下独立开发。完成分支上的工作后,可以将分支上的修改合并回主干或其他分支。

  6. 查看历史记录(View History):SVN记录了仓库中的所有版本历史记录。你可以随时查看每个版本的修改内容和作者等信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/181802.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5.数据表基本操作

目录 1.创建数据表 创建数据表的语法格式: 查看当前数据库的表: 主键 1.单字段主键 (1)在定义列的同时指定主键,语法规则如下: (2)在定义完所有列之后指定主键。 2.多字段联合主键 外键: 非空约束&#xff1…

周报4_YMK

FlashAttention 硬件知识 以 A100 (40GB HBM) 为例,下面显示其内存层次结构的粗略图。SRAM内存分布在108个流式多处理器(SMs)上,每个处理器192KB。片上SRAM比HBM快得多,但比HBM小得多,在计算方面,使用Tensor Core的B…

【漏洞复现】Aapache_Tomcat_AJP协议_文件包含漏洞(CVE-2020-1938)

感谢互联网提供分享知识与智慧,在法治的社会里,请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证 说明内容漏洞编号CVE-2020-1938漏洞名称Aapache_Tomcat_AJP文件包含漏洞漏洞评级高…

thinkPHP5怎么打开页面调试,查看网页运行时间

开启trace 在config.php中找到 ‘app_trace’ > false, 修改为: ‘app_trace’ > true,

环形链表和相交链表OJ题

环形链表和相交链表OJ题 这篇博客详细讲解了环形数组和相交数组的问题 文章目录 环形链表和相交链表OJ题一、环形链表e.g.1e.g.2 二、相交链表 一、环形链表 环形列表是指尾结点next不指向NULL了,而是指向包括自己的前面任意一个结点。 e.g.1 题目及要求&#xf…

线程的创建、等待、退出

多线程开发在Linux平台上已经有成熟的pthread库支持,所以使用pthread库在编译时要加上-pthread。其设计的多线程开发的基本概念主要包含3点:线程、互斥锁、条件。其中线程操作又分线程的创建、退出、等待三种。互斥锁包含4种操作,分别是创建、…

【Windows】Google和火狐浏览器禁用更新的操作方式

想必很多网民常用的浏览器是Edge,Google,火狐这三种,但是浏览器都有后台自动更新,更新提示会一直显示,要用户去点击才关掉,有点强迫症的用户就会想要把它一直关掉,可每次打开都关不掉&#xff0…

中期科技:智慧公厕打造智能化城市设施,提升公共厕所管理与服务体验

智慧公厕是利用先进的技术和创新的解决方案来改进公厕的设施和管理。借助物联网、互联网、5G/4G通信、人工智能、大数据、云计算等新兴技术的集成,智慧公厕具备了一系列令人惊叹的应用功能。从监测公厕内部人体活动状态、人体存在状态,到空气质量情况、环…

软件开发项目文档系列之十如何撰写测试用例

目录 1 概述1.1 编写目的1.2 定义1.3 使用范围1.4 参考资料1.5 术语定义 2 测试用例2.1 功能测试2.1.1 用户登录功能2.1.2 商品搜索功能 2.2 性能测试2.2.1 网站响应时间2.2.2 并发用户测试 附件: 测试用例撰写的要素和注意事项附件1 测试用例要素附件2 测试用例的注…

虹科示波器 | 汽车免拆检修 | 2010款江铃陆风X8车发动机怠速抖动、加速无力

一、故障现象 一辆2010款江铃陆风X8车,搭载4G6GS4N发动机,累计行驶里程约为20万km。该车在其他修理厂进行发动机大修,维修后试车,发动机怠速抖动、加速无力。用故障检测仪检测,发动机控制模块(ECM&#xff…

时间序列预测模型实战案例(八)(Informer)BestPaper论文模型Informer代码实战讲解

论文地址->Informer论文地址PDF点击即可阅读 代码地址-> 论文官方代码地址点击即可跳转下载GIthub链接 本文介绍 本篇博客带大家看的是Informer模型进行时间序列预测的实战案例,它是在2019年被提出并在ICLR 2020上被评为Best Paper,可以说Inform…

postman做接口测试

之前搞自动化接口测试,由于接口的特性,要验证接口返回xml中的数据,所以没找到合适的轮子,就自己用requests造了个轮子,用着也还行,不过就是case管理有些麻烦,近几天又回头看了看postman也可以玩…

【漏洞复现】Metinfo6.0.0任意文件读取漏洞复现

感谢互联网提供分享知识与智慧,在法治的社会里,请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现代码审计漏洞点 1.5、深度利用EXP编写 1.6、漏洞挖掘1.7修复建议 1.1、漏洞描述 漏洞名称:MetInfo任意文件…

强大的pdf编辑软件:Acrobat Pro DC 2023中文

Acrobat Pro DC 2023是一款强大的PDF编辑和管理软件,它提供了广泛的功能,使用户能够轻松创建、编辑、转换和共享PDF文档。通过直观的界面和先进的工具,用户可以快速进行文本编辑、图像调整、页面管理等操作,同时支持OCR技术&#…

如何在苹果Mac系统设置中查看Wi-Fi密码?

在 Mac 上查找保存的 Wi-Fi 密码的最简单方法之一是从系统设置内的高级 Wi-Fi 首选项页面。您可以通过下面的方式访问此页面来查找您保存的 Wi-Fi 密码。 1.在 Mac 上,选取「苹果菜单」选择「系统设置」。 2.从侧边栏中选择「Wi-Fi」,单击「高级」。 3.…

OpenCV检测圆(Python版本)

文章目录 示例代码示例结果调参 示例代码 import cv2 import numpy as np# 加载图像 image_path DistanceComparison/test_image/1.png image cv2.imread(image_path, cv2.IMREAD_COLOR)# 将图像转换为灰度 gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 使用高斯模糊消除…

git更改远程仓库地址

1、输入命令【git remote -v】查看当前git远程仓库地址 2、输入命令【git remote set-url origin 新地址】替换成新地址 3、输入命令【git remote -v 】查看是否更新成功

WPF布局控件之DockPanel布局

前言:博主文章仅用于学习、研究和交流目的,不足和错误之处在所难免,希望大家能够批评指出,博主核实后马上更改。 概述: DockPanel 位置子控件基于子 Dock 属性,你有 4 个选项停靠,左 (默认) &…

全球发布|首个AI视角下的生态系统架构解读—《生态系统架构--人工智能时代从业者的新思维》重磅亮相!

点击可免费注册下载 👇 人工智能时代的企业架构师必读系列 《生态系统架构--人工智能时代从业者的新思维》 Philip Tetlow、Neal Fishman、Paul Homan、Rahul著 The Open Group Press 2023年11月出版 这本书可以很好地帮助全球架构师使用人工智能来构建、开发和…

C语言映射表在串口数据解析中的应用

一、映射表在串口数据解析中的应用 1、数据结构 typedef struct {char CMD[CMDLen];unsigned char (*cmd_operate)(char *data); }Usart_Tab; 2、指令、函数映射表 static const Usart_Tab InstructionList[CMDMax] {{"PWON",PowOn},{"PWOFF",PowOff}…