学习SVN

学习SVN

    • 摘要
    • 1.简介
    • 2.下载安装
    • 3.SVN生命周期
    • 4.SVN Server搭建
    • 5.SVN Client使用
    • 6.git与SVN的区别

SVN 官网 Github SVN 源码

摘要

本篇博客对SVN的基础使用进行总结,以便加深理解和记忆

1.简介

SVN是Apache Subversion的缩写,是一个开源的源码版本控制系统

2.下载安装

SVN官方的发布版只提供了源码,没有提供各个平台对应的安装包或下载程序,不过可以在官网找到不同社区贡献者提供的安装包或下载程序页

  • SVN Server

    • Windows
      • 命令行工具(将bin目录配置到系统环境变量中)
        • sourceforge提供的32位的Subversion for Windows
        • VISUALSVN提供的最新的Subversion命令行工具(选用此项,同时包括了客户端)
      • 可视化工具
        • VISUALSVN Server
        • SVNBucket(官网中有详细的教程和针对不同IDE的插件)
    • Linux:大多数 GNU/Linux 发行版系统自带了Subversion
    # 检查安装
    svnserve --version
    # Centos安装
    yum install subversion
    # Ubuntu安装
    apt-get install subversion
    
  • SVN Client

    • Windows
      • 命令行工具:同上的VISUALSVN提供的SVN命令行工具
      • 可视化工具:tortoisesvn
    # 检查安装
    svn --version
    

3.SVN生命周期

  • SVN Serve创建版本库repository:git服务端的git init

  • 检出checkout:相当于git clone

  • 更新update:相当于git pull,在本地修改前先从版本库拉取同步更新

  • 添加本地文件/文件夹到版本控制:相当于git add + commit

  • 提交commit:相当于git push

  • 解决冲突:SVN也是以行为单位管理代码和文件,若两人未提交修改同一行SVN则会进行自动合并,若为同一行则会提示冲突,需要手动确认

4.SVN Server搭建

  • 命令行

    • 创建版本库
    svnadmin create {版本库文件夹路径}
    
    • 配置文件:配置文件目录在版本库文件夹路径中的conf文件夹内

      • svn服务配置文件svnserve.conf
      # 通用配置项
      [general]
      # 未鉴权用户访问版本库的权限:可读可写"write"、只读"read" 和 无访问权限"none"
      anon-access = read
      # 鉴权用户访问版本库的权限:可读可写"write"、只读"read" 和 无访问权限"none"
      auth-access = write
      # 指定用户密码配置文件位置,默认为当前文件夹下的相对路径,也可使用绝对路径
      password-db = passwd
      # 指定权限配置文件位置,默认为当前文件夹下的相对路径,也可使用绝对路径
      authz-db = authz
      # 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件。
      realm = My First Repository# 其余配置项暂略
      
      • 用户密码配置文件passwd
      [users]
      # 格式:{用户名} = {密码}
      lyf = 15194572419
      
      • 权限配置文件authz
      # 用户组
      [groups]
      # 格式:{权限组名} = {用户名列表}
      harry_and_sally = harry,sally
      # 权限配置,格式:
      # [{版本库名}:{路径}]
      # @{权限组名} = {权限}
      [test:/home/thinker]
      thinker = r
      @harry_and_sally = rw
      * = r
      
      • VN启动模式

        • 单库svnserve模式:一个svnserve只能为一个版本库工作
        • 多库svnserve模式:将svnserve指定到版本库的上级目录
      • 启动SVN Serve服务

      svnserve -d -r {目录} --listen-port {端口号,默认为3690}
      
      • SVN版本库访问地址:svn://192.168.0.1/{-r指定的路径}
  • 可视化工具

    • SVNBucket:第三方提供的云端SVN服务器

    • VISUALSVN教程 CSDN

5.SVN Client使用

  • 命令行
# 1.导入项目
svn import {SVN地址} --message {"附加信息"}
# 2.检出项目
svn checkout {SVN地址} [--username={用户名}]
# 3.导出一份“干净”的项目
svn export {SVN地址} {本地项目名}
# 4.查看本地工作副本状态:?表示未添加到版本控制中,A表示已添加待提交
svn status
# 5.查看差异
# 5.1检查本地修改
svn diff
# 5.2检查工作副本和版本库
svn diff -r {版本号,如3} [{文件名}]
# 5.3比较两个版本库
svn diff -r {版本库号1:版本库号2} [{文件名}]
# 6.添加本地文件/文件夹到版本控制
svn add {文件或文件夹名}
# 7.更新与版本仓库一致
svn update [-指定版本]
# 8.提交
svn commit -m {"附加信息"}
# 9.撤回本地工作副本某文件/文件夹的修改
svn revert {文件名}
svn revert -R {文件夹名}
# 10.版本回退
svn merge -r {当前版本号:回退版本号} {文件名}
# svn merge -r 22:21 readme 
# 11.显示信息
svn log
# 12.仅查看不比较
svn cat
svn cat -r {版本号} [{文件名}]
# 13.在不检出的情况下查看版本库中的文件列表
svn list {SVN地址}
# 14.对文件进行改名和删除
svn mv b.c bb.c
svn rm d.c
# 15.为失败的事务清场
svn cleanup
# 16.SVN分支(本地操作)
# 16.1查看分支
svn copy {基版本库路径} {分支版本库路径}
# svn copy trunk/ branches/my_branch
# 16.2在新分支中修改
# 16.3切换到基版本库,将分支合并到基版本库
svn merge {分支版本库路径}
# 16.4将合并好的基版本库变化提交到版本库中
# 17.标签:主要用于项目开发中的里程碑,比如开发到一定阶段可以单独一个版本作为发布等
# 17.1未本地工作副本创建标签(新的目录将会被创建在 tags 目录下)
svn copy trunk/ tags/v1.0
# 17.2提交tag内容
svn commit -m "tags v1.0" 
  • 可视化工具(tortoisesvn)

TortoiseSVN安装及使用方法-CSDN博客

TortoiseSVN 使用教程 | 菜鸟教程 (runoob.com)

6.git与SVN的区别

  • Git是分布式的,而SVN不是,SVN依赖于网络

  • Git把内容按元数据方式存储,而SVN是按文件

  • Git没有一个全局版本号,而SVN有

  • Git的内容的完整性要优于SVN

  • Git的分支克隆更快

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

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

相关文章

java-ssm-jsp-基于ssm的宝文理学生社团管理系统

java-ssm-jsp-基于ssm的宝文理学生社团管理系统 获取源码——》公主号:计算机专业毕设大全

应对高并发的软件架构之道

在去年年终总结的时候,我提出了这样的困惑,究竟什么是真正的技术能力,是对于各种底层技术的钻研吗?钻研是好事,但实践下来,深入钻研并不在实际工作中有用,且钻研的越深,忘得越快&…

AIGC安全研究简述(附资料下载)

2023 AIGC技术实践及展望资料合集(29份).zip 2023 AIGC大型语言模型(LLM)实例代码合集.zip 2023大模型与AIGC峰会(公开)PPT汇总(25份).zip AIGC的安全研究是一个复杂且重要的领域,涉及多个关键…

Leetcode : 1137. 高度检查器

学校打算为全体学生拍一张年度纪念照。根据要求,学生需要按照 非递减 的高度顺序排成一行。 排序后的高度情况用整数数组 expected 表示,其中 expected[i] 是预计排在这一行中第 i 位的学生的高度(下标从 0 开始)。 给你一个整数…

一篇搞懂什么是LRU缓存|一篇搞懂LRU缓存的实现|LRUCache详解和实现

LRUCache 文章目录 LRUCache前言项目代码仓库什么时候会用到缓存(Cache)缓存满了,怎么办?什么是LRUCacheLRUCache的实现LRUCache对应的OJ题实现LRUCache对应的STL风格实现 前言 这里分享我的一些博客专栏,都是干货满满的。 手撕数据结构专栏…

什么是测试用例?如何设计?

在学习或者实际的测试工作中经常都会提到“测试用例”这个词,没错,测试用例是测试工作的核心,不管要做的是什么样的测试,在真正动手执行测试之前,我们都需要先根据软件需求来设计测试用例,之后再依据设计好…

动态加权平衡损失:深度神经网络的类不平衡学习和置信度校准

系列文章目录 文章目录 系列文章目录前言一、研究目的二、研究方法创新点处理类不平衡的大多数方法交叉熵损失函数Brier Score 三、DWB Loss总结 前言 Dynamically Weighted Balanced Loss: ClassImbalanced Learning and Confidence Calibration of Deep Neural Networks 下载…

2024年3月10日 十二生肖 今日运势

小运播报:2024年3月10日,星期日,农历二月初一 (甲辰年丁卯月癸酉日),法定节假日。 红榜生肖:龙、牛、蛇 需要注意:鸡、狗、兔 喜神方位:东南方 财神方位:…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Image)

Image为图片组件,常用于在应用中显示图片。Image支持加载PixelMap、ResourceStr和DrawableDescriptor类型的数据源,支持png、jpg、jpeg、bmp、svg、webp和gif类型的图片格式。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容&am…

作业 字符数组-统计和加密

字串中数字个数 描述 输入一行字符&#xff0c;统计出其中数字字符的个数。 输入 一行字符串&#xff0c;总长度不超过255。 输出 输出为1行&#xff0c;输出字符串里面数字字符的个数。 样例 #include <iostream> #include<string.h> using namespace std; int m…

AI绘画提示词案例(宠物

目录 1. 雪地猫猫&#xff1a;1.1 提示词&#xff1a;1.2 效果&#xff1a; 2. 趴地猫猫&#xff1a;2.1 提示词&#xff1a;2.2 效果&#xff1a; 3. 长城萨摩耶&#xff1a;3.1 提示词&#xff1a;3.2 效果&#xff1a; 4. 沙发猫猫&#xff1a;4.1 提示词&#xff1a;4.2 效…

[BT]小迪安全2023学习笔记(第21天:Web攻防-JWT)

第21天 JSON Web Token&#xff08;JWT&#xff09; JWT是一种紧凑且自包含的方式&#xff0c;用于在网络上安全地传输信息作为JSON对象。这些信息可以被验证和信任&#xff0c;因为它们是数字签名的。JWT通常用于身份验证和信息交换&#xff0c;下面是一个简化的JWT示例&…

Mysql:如何自定义导出表结构

为了方便将mysql表结构信息快速录入到word或Excel表格中&#xff0c;最终实现如下效果&#xff1a; 对于word,则可将Excel表格复制粘贴即可。 废话不多少&#xff0c;开干。 准备准建&#xff1a;navicat 或sqlyog 第一步&#xff1a;编辑sql&#xff0c;如&#xff1a; SE…

P5461 赦免战俘

来自-赦免战俘 - 洛谷 参考&#xff1a;题解 P5461 【赦免战俘】 - 洛谷专栏 代码&#xff1a; #include <iostream> #include <math.h> //利用pow()函数算次方 using namespace std; int a[1500][1500]; //因为最大每边顶多有2^101024人&#xff0c;所以1500…

HTML 01

1.html使用标签来表达 结束标签多一个/ <strong>文字内容</strong> <hr> 包裹内容就是双标签&#xff0c;换行等是单标签 浏览器中显示内容&#xff1a; 2.html的骨架是网页模板 <!DOCTYPE html> <html lang"en"> <head>&l…

Full GC的认识、预防和定位

(/≧▽≦)/~┴┴ 嗨~我叫小奥 ✨✨✨ &#x1f440;&#x1f440;&#x1f440; 个人博客&#xff1a;小奥的博客 &#x1f44d;&#x1f44d;&#x1f44d;&#xff1a;个人CSDN ⭐️⭐️⭐️&#xff1a;传送门 &#x1f379; 本人24应届生一枚&#xff0c;技术和水平有限&am…

【leetcode】429. N 叉树的层序遍历

题目描述 给定一个 N 叉树&#xff0c;返回其节点值的_层序遍历_。&#xff08;即从左到右&#xff0c;逐层遍历&#xff09;。 树的序列化输入是用层序遍历&#xff0c;每组子节点都由 null 值分隔&#xff08;参见示例&#xff09;。 示例 1&#xff1a; 输入&#xff1a;…

使用Python编写简单学生管理系统

学完python基础&#xff0c;把学过的知识运用起来做一个简单的学生管理系统 1、需求分析 需求&#xff1a;进入系统显示系统功能界面&#xff0c;功能如下&#xff1a; ① 添加学员信息 ② 删除学员信息 ③ 修改学员信息 ④ 查询学员信息(只查询某个学员) ⑤ 遍历所有学…

【蓝桥杯】蓝桥杯算法复习(一)

&#x1f600;大家好&#xff0c;我是白晨&#xff0c;一个不是很能熬夜&#x1f62b;&#xff0c;但是也想日更的人✈。如果喜欢这篇文章&#xff0c;点个赞&#x1f44d;&#xff0c;关注一下&#x1f440;白晨吧&#xff01;你的支持就是我最大的动力&#xff01;&#x1f4…

50道SQL面试题

50道SQL面试题 有需要互关的小伙伴,关注一下,有关必回关,争取今年认证早日拿到博客专家 环境 -- ---------------------------- -- Table structure for teacher -- ---------------------------- DROP TABLE IF EXISTS teacher; CREATE TABLE teacher (t_id varchar(20) …