版本控制系统-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.hqwc.cn/news/162278.html

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

相关文章

K8S部署时IP问题

本次环境搭建需要安装三台Centos服务器(一主二从);搭配的前提时做好ip的设置 主机IP规划 IP地址的设定需要根据自己主机来设置,在虚拟机的虚拟网络编辑器中看他给你的ip;不要查什么ipconfig了。 在虚拟网络编辑器中…

Redis-使用java代码操作Redis

🎬 艳艳耶✌️:个人主页 🔥 个人专栏 :《Spring与Mybatis集成整合》《Vue.js使用》 ⛺️ 越努力 ,越幸运。 1、Java连接Redis Redis与MySQL都是数据库,java操作redis其实跟操作mysql的过程是一样的。 1.1…

开源 Wiki 软件 wiki.js

wiki.js简介 最强大、 可扩展的开源Wiki 软件。使用 Wiki.js 美观直观的界面让编写文档成为一种乐趣!根据 AGPL-v3 许可证发布。 官方网站:https://js.wiki/ 项目地址:https://github.com/requarks/wiki 主要特性: 随处安装&a…

CodeWhisperer 的安装及体验

文章作者:Pony CodeWhisperer 是亚马逊出品的一款基于机器学习的通用代码生成器,可实时提供代码建议。类似 Cursor 和 Github Copilot 编码工具。 官网:https://aws.amazon.com/cn/codewhisperer/?trkcndc-detail 在编写代码时&#xff0c…

【NI-DAQmx入门】NI-DAQmx之Python

NI-DAQmx Python GitHub资源: NI-DAQmx Python 文档说明:NI-DAQmx Python Documentation — NI-DAQmx Python API 0.9 documentation nidaqmx支持 CPython 3.7和 PyPy3,需要注意的是多支持USB DAQ和PCI DAQ,cDAQ需要指定…

利用maven的dependency插件分析工程的依赖

dependency:analyze https://maven.apache.org/plugins/maven-dependency-plugin/analyze-mojo.html 分析项目的依赖,确定哪些:用了并且声明了、用了但没有声明、没有使用但声明了。 dependency:analyze可以单独使用,所以它总是会执行test-…

【漏洞复现】weblogic-10.3.6-‘wls-wsat‘-XMLDecoder反序列化(CVE-2017-10271)

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描nacsweblogicScanner3、漏洞验证 说明内容漏洞编号CVE-2017-10271漏洞名称Weblogic < 10.3.…

js获取url截取文件名或后缀名

示例图 var url "http://localhost:5613/static/挽风.jpg"var lastOf url.lastIndexOf(/) // /所在的最后位置var str url.substr(lastOf 1) //截取文件名称和后缀 输出&#xff1a;挽风.jpgvar strUrl url.substr(0, lastOf) //截取路径字符串 输出&…

Redis原理到常用语法基础图文讲解

在初期&#xff0c;已经讲述了Redis安装问题。现在正式进入Redis的入门阶段 系统架构的演进 传统单机架构 一台机器运行应用程序、数据库服务器 现在大部分公司的产品都是这种单机架构。因为现在计算机硬件发展速度很快&#xff0c;哪怕只有一台主机&#xff0c;性能也很高…

11.4-GPT4AllTools版本已开始对小部分GPT3.5用户内测推送

OpenAI已经开始小规模推送GPT4 AllTools功能&#xff0c;部分GPT博主已经第一时间体验了此功能&#xff0c;此功能特色是整合目前的多模态功能以及文件上传和联网模块&#xff0c;无需切换&#xff0c;更要全面综合 可上传包括 PDF、数据文件在内的任意文档&#xff0c;并进行分…

单片机温湿度-光照-DHT11-烟雾气体检测控制系统-proteus仿真-源程序

一、系统方案 本设计采用52单片机作为主控器&#xff0c;液晶1602显示&#xff0c;DHT11温湿度&#xff0c;光照、烟雾气体检测&#xff0c;按键设置报警阀值&#xff0c;蜂鸣器报警。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 // // …

【ARMv8 SIMD和浮点指令编程】浮点加减乘除指令——四则运算

浮点指令有专门的加减乘除四则运算指令,比如 FADD、FSUB、FMUL、FDIV 等。 1 FADD (scalar) 浮点加法(标量)。该指令将两个源 SIMD&FP 寄存器的浮点值相加,并将结果写入目标 SIMD&FP 寄存器。 该指令可以产生浮点异常。根据 FPCR 中的设置,异常会导致在 FPSR 中…