当前位置: 首页 > news >正文

SVN基本使用笔记——广州云科

简介

SVN是什么?
代码版本管理工具
它能记住你每次的修改

查看所有的修改记录

恢复到任何历史版本

恢复己经删除的文件


SVN跟Git比,有什么优势
使用简单,上手快
目录级权限控制,企业安全必备
子目录Checkout,减少不必要的文件检出


主要应用:
开发人员用来做代码的版本管理
用来存储一些重要的文件,比如合同
公司内部文件共享,并且能按目录划分权限


SVN仓库
推荐: svnbucket.com,sVN桶

现在最好用的SVN服务


安装sVN客户端
TortoisesvN   windows推荐

cornstone    mac推荐

svnbucket.com(sVN桶)官网如下:也有使用教程

svn使用教程 · SVN使用教程

下载安装svn客户端

可参考:svn客户端下载 · SVN使用教程

从而下载win的64位的TortoiseSVN客户端

官网下载太慢,也可找别的渠道下载,如【TortoiseSVN下载 中文版】TortoiseSVN 1.14.5-ZOL软件下载

下载后,点击安装直接next。

下载汉化包:还是找到上面官网svn客户端下载 · SVN使用教程

下载后运行安装,安装最后一步勾选配置TortoisesvN使用这个语言。即可。

sVN基本操作:
检出checkout

新增add
提交commit

更新update

历史记录

SVN基本操作

1、进入官网,注册登录后,项目列表点击加号创建一个项目,输入名称和描述,可先不勾选那个创建三个目录的按钮。

SVNBucket - SVN仓库,免费 SVN 代码托管服务器,不限私有,不限成员

2、点击这个项目,点击复制SVN地址如svn://svn.svnbucket.com/svn_3284514536/svnbucket/

3、桌面上创建一个目录,如workspace,点进去,点击右键,然后点击svn检出,再给他加一层目录后点击确定,输入svn的用户名和密码即可。

4、进入该目录C:\Users\kongdeyi\Desktop\workspace\svnbucket后,发现一个.svn文件夹,我们在这个C:\Users\kongdeyi\Desktop\workspace\svnbucket目录下从别的地方copy几个文件放进去。右键svn提交,然后第一个框中输入描述,第二个框中选择要提交的内容,也可点击全选全部选中,然后确定即可。

5、然后再是svnbucket网站中可看到提交的内容和记录等

6、我们修改一下pojo中的User实体类中的内容,然后再次在.svn文件夹所在的目录点右键svn提交,提交前可双击查看文件变更的内容差异:

确定没问题后,确定提交即可。

7、svnbucket网站上该文件查看发现是经过修改后的内容。

8、查看日志:在该C:\Users\kongdeyi\Desktop\workspace\svnbucket\文件夹或子文件夹中右键tortoiseSVN选择显示日志即可查看之前提交的内容。

在svn提交之前先右键的svn更新是一个比较好的习惯,可避免覆盖原文件。

撤销和回复

撤销和恢复:
撤销本地修改

撤销已提交内容

恢复到指定版不

第一种情况:比如我们修改了pojo下的User类将类名改成User666,只是在本地还未提交,我们想到这个是个错误的修改,我们可右键tortoiseSVN中选择还原,也可在svn提交的时候,检查一下修改的内容后,提交窗口中右击该文件选择svn还原。

第二种情况,当我们将修改成错误的内容文件提交上去了,提交完后发现该pojo下的user类刚刚修改成user666是有问题的。

可先在右键tortoiseSVN中日志中看到这次提交的文件,点开发现和之前修改的区别确实是改错了。我们可在下图位置右键,选择复原此版本做出的修改

然后现在只是本地恢复正常了,但我们还需要提交到仓库,右键svn提交即可

第三种情况是我们想恢复到一个比较早的版本,恢复到指定版本

右键tortoiseSVN中日志中,想要复原到的版本,右键复原到此版本

现在还是只是本地修改了,我们还需要svn提交。

添加忽略

忽略不想提交的文件:

C:\Users\kongdeyi\Desktop\workspace\svnbucket文件夹下的pojo我们不想pojo文件夹提交了,我们可右击这个pojo文件夹,tortoiseSVN->去除版本控制并增加到忽略列表,选择pojo即可。

然后,先svn更新后svn提交,就会将这些删除pojo目录的本地提交到远程仓库。

也可在svn提交的时候,在第二个框中,对某个文件或文件夹右键,选择增加到忽略列表也可。

又不想忽略这个pojo文件夹或其他已经被忽略的文件呢?

右击这个被忽略的文件或文件夹,tortoiseSVN选择加入,或选择从忽略列表中删除。然后svn提交即可。

解决冲突

什么情况容易发生冲突?
1多个人修改了同个文件的同一行

2无法进行合并的二进制文件
怎么避免冲突?
经常update同步下他人的代码

二进制文件不要多个人同时操作
冲突了怎么办?
解决冲突很简单,不用怕

版本冲突原因:

假设A、B两个用户都在版本号为100的时候,更新了kingtuns.txt这个文件,A用户在修改完成之后提交kingtuns.txt到服务器,这个时候提交成功,这个时候kingtuns.txt文件的版本号已经变成101了。同时B用户在版本号为100的kingtuns.txt文件上作修改,修改完成之后提交到服务器时,由于不是在当前最新的101版本上作的修改,所以导致提交失败。

别人修改了pojo下的User中类名改为User666并提交了,本机电脑没有update这个最新版本的,在上一个版本中也修改了User类的类名这一行的代码为public interface,然后svn更新,或只选中这个User类进行svn更新这一个文件,就会报冲突,会生成几个这个User文件,mine是本地的,r7和r9是版本7或9的,参考下图:

解决方法:

然后右击爆红的地方,可使用他的,丢弃我的,也可丢弃我的,使用它的。也可编辑冲突:

编辑冲突,可以在他的或我的冲突的这行右击这一行,使用某个正确的文本块,如下:

确定后,更新成功,本地恢复正常了,解决冲突了。

对于修改二进制文件,比如图片,用别的地方某个同名图片覆盖掉svn项目中的某个图片。然后svn更新,就会产生冲突。右击爆红的冲突这行,可选择使用他们的还是使用我的,或选择编辑冲突,选择要本地现在的副本的,还是上一个版本的,还是远程的。

分支

什么时候需要开分支?
隔离线上版本和开发版本
大功能开发,不想影响到其他人,自己独立开个分支去开发


sVN经典目录结构:
trunk    主干,开发中的文件 ,平时在主干上开发,开发后用那个版本可开一个分支存储到branch中。
branches   分支

tags    标签

1、可在vnbucket中创建项目的时候勾选那个创建分支接口的选框。

2、自己创建:

先创建这三个文件夹,然后将之前该svnbucket文件夹中的工作文件放到trunk目录中,svn提交,选择全部文件提交即可。        

开发就在主干上开发,开发完成要上线了,就可开一个分支。

1、右击trunk文件夹,ortoiseSVN选择分支/标记,选择至路径branches,加个onlinev1.0

填写信息,选择版本库中的最新版本

点击确定即可

2、更新一下C:\Users\kongdeyi\Desktop\workspace\svnbucket  svn更新,然后branches目录下就会有onlinev1.0文件夹,里面就有trunck分支下的所有内容复制了一份。

这样会有个问题,以后分支越来越多,要更新的内容也会越来越多,我们可将分支单独checkout一份出来:

右击这个文件夹,选择属性

选择subVersion,复制全部的url:

回到workspace,在这个目录右击,选择svn检出,也可改个名字,确认即可:

然后同理,sgvnbucket目录下的trunk目录也可属性复制url,在workspack目录下检出一份。这样svnbucket目录就可删除了,结果如下

这样在主干修改的内容提交不会影响分支,分支修改提交也不会影响主干。

合并分支 

分支上修改的内容怎么同步到主干上呢,如分支上修改bug,要同步到主干上:

workspace目录下右击这个svnbucket-onlinev1.0文件夹,ortoiseSVN选择显示日志。选中某个版本,合并版本到:

合并版本到,选择主干的文件夹:

 本地主干目录合并好了,我们在主干目录svn提交到远程仓库

分支切换 

再开一个分支:

右击workspace目录下的svnbucket-trunk目录,选择tortoisesvn,选择分支/标记,选择branches分支,起个名onlinev2.0,确认即可。

右击这个svnbucket-onlinev1.0, tortiosesvn,选择切换:

可下拉切换,或点右侧选择路径切换 

确定后,右击这个svnbucket-onlinev1.0属性,就看到切换成2.0了

当然,我们可以给这个文件夹改个名字:

也可点进C:\Users\kongdeyi\Desktop\workspace\svnbucket-online,右击后 tortiosesvn点击版本库浏览器,查看结构        

代码暂存

有什么用?
1.代码改了很多,突然需要紧急修复一个bug,但是代码还没写完,不能提交。

2.代码重构了很多,突然需要发布新版本,但是代码还跑不起来,不能提交。

C:\Users\kongdeyi\Desktop\workspace\svnbucket-trunk\pojo中的User类,我们修改了一些代码,带还没改完,不应该提交。我们右击后Tortoise中选择汉化翻译的贮藏

上面两个按钮,一个不保留修改,一个保留修改。 

取出暂存,我们右击后Tortoise中选择汉化翻译的取消贮藏,选择暂存的文件来取出暂存

 复杂代码合并

上面分支部分学了在日志中选择某个版本合并到另外一个分支上去。

情况:
主千开发新功能,改了很多
分支是线上版本,修复了很多bug
两个分支的代码时间久了差异很大,无法直接分支合并或者指定提交记录合并代码


使用BeyondCompare

下载:下载 | Beyond Compare 中文官方网站

安装后使用

选择文件比较,选择将路径分别粘贴到左右:

选中右键比较内容,直接点开始,

上方选择差别菜单,也可选择全部。

点开这个User.java文件:

点左边这个,将右边替换,点击右边这个将左边替换。然后修改完后,再ctrl+s可保存。

然后就可按需合并修改了。然后再把代码提交上即可。

相关文章:

SVN基本使用笔记——广州云科

简介 SVN是什么? 代码版本管理工具 它能记住你每次的修改 查看所有的修改记录 恢复到任何历史版本 恢复己经删除的文件 SVN跟Git比,有什么优势 使用简单,上手快 目录级权限控制,企业安全必备 子目录Checkout,减少不必要的文件检出…...

python爬虫-Selenium

一、Selenium简介 Selenium是一个用于Web应用程序测试的工具,Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。模拟浏览器功能,自动执行网页中的js代码,实现动态加载。 二、环境配置 1、查看本机电脑谷歌浏览器的版…...

flutter plugins插件【一】【FlutterJsonBeanFactory】

1、FlutterJsonBeanFactory 在Setting->Tools->FlutterJsonBeanFactory里边自定义实体类的后缀,默认是entity 复制json到粘贴板,右键自己要存放实体的目录,可以看到JsonToDartBeanAction Class Name是实体名字,会默认加上…...

系统中出现大量不可中断进程和僵尸进程(理论)

一 进程状态 当 iowait 升高时,进程很可能因为得不到硬件的响应,而长时间处于不可中断状态。从 ps 或者 top 命令的输出中,你可以发现它们都处于 D 状态,也就是不可中断状态(Uninterruptible Sleep)。 R …...

L1-012 计算指数(Python实现) 测试点全过

前言: {\color{Blue}前言:} 前言:本系列题使用的是“PTA中的团体程序设计天梯赛——练习集”的题库,难度有L1、L2、L3三个等级,分别对应团体程序设计天梯赛的三个难度,如有需要可以直接查看对应专栏。发布个…...

String、StringBuffer、StringBuilder的区别

String、StringBuffer、StringBuilder的区别 String的内容不可修改,StringBuffer与StringBuilder的内容可以修改.StringBuffer与StringBuilder(更快)大部分功能是相似的StringBuffer采用同步处理,属于线程安全操作;而S…...

.net基础概念

1. .NET Framework .NET Framework开发平台包含公共语言运行库(CLR)和基类库(BCL),前者负载管理代码的执行,后者提供了丰富的类库来构建应用程序。.NET Framework仅支持Windows平台 2. Mono 由于.NET Framework支支持windows环境,因此社区…...

电缆工厂 3D 可视化管控系统 | 智慧工厂

近年来,我国各类器材制造业已经开始向数字化生产转型,使得生产流程变得更加精准高效。通过应用智能设备、物联网和大数据分析等技术,企业可以更好地监控生产线上的运行和质量情况,及时发现和解决问题,从而提高生产效率…...

bazel高效使用和调优

Bazel 为了正确性和高性能,做了很多优秀的设计,那么我们如何正确的使用这些能力,让我们的构建性能“起飞”呢, 我们将从本地研发和 CI pipeline 两种场景进行分析。 本地研发 本地研发通常采用默认的 Bazel 配置即可&#xff0c…...

【实训项目】传道学习助手APP设计

1.设计摘要 跨入21世纪以来,伴随着时代的飞速发展,国民对教育的重视度也有了进一步的提升。我们不难发现虽然很多学习内容有学习资料或者答案,但是这些内容并不能达到让所有求学的人对所需知识进行完全地理解与掌握。所以我们需要进行提问与求助。那么一…...

短信验证码服务

使用的是 阿里云 阿里云官网 1.找到 左上角侧边栏 -云通信 -短信服务 2.在快速学习测试处 ,按照步骤完成快速学习,绑定要测试的手机号,选专用 【测试模板】,自定义模板需要人工审核,要一个工作日 3.右上角 获取 Acces…...

windows如何更改/禁用系统更新

提示:首先说明这属于将更新时间更改,不过你可以的将更新时间更改为十年一百年 废话不多说开始正文: 1.首先:winR打开运行,输入regedit,进入注册表编辑器 2.进入编辑器后依次点击:HKEY_LOCAL_MACHINE\SOFT…...

Clion 使用ffmpeg 学习1 开发环境配置

Clion 使用ffmpeg 学习1 开发环境配置 一、准备工作1. 准备环境2. 下载FFmpeg 二、操作步骤1. Clion 新建一个C项目2. 修改 CMakeLists.txt3. 修改配置4. 运行测试5. 打印rtsp 流信息的 demo 一、准备工作 在视频处理和多媒体应用程序开发中,FFmpeg 是一个强大的开…...

浏览器连不上 Flink WebUI 8081 端口

安装 flink-1.17.0 后,start-cluster.sh 启动,发现浏览器连不上 Flink WebUI 的8081端口。 问题排查: command R,输入cmd,检查宿主机能否ping通虚拟机,发现能ping通。 检查是否有flink以外的任务占用8081…...

Doris集群安装部署(1.2.4.1 release)

此文阅读需要有Linux和服务器硬件基础!某些内容写的不是特别细,如果常见的linux基础命令tar、uzip、mv、mkdir、系统包的安装等等,以文字带过了,这样可以减少文章篇幅。官方的安装部署方式一定要好好看一下,最好是尝试…...

对HashMap的value做升序、降序

public class MapUtils {// Map的value值降序排序public static <K, V extends Comparable<? super V>> Map<K, V> sortDescend(Map<K, V> map) {List<Map.Entry<K, V>> list new ArrayList<>(map.entrySet());list.sort((o1, o2)…...

算法面试-深度学习基础面试题整理-AIGC相关(2023.9.01开始,持续更新...)

1、stable diffusion和GAN哪个好&#xff1f;为什么 &#xff1f; Stable diffusion是一种基于随机微分方程的生成方法&#xff0c;它通过逐步增加噪声来扰动原始图像&#xff0c;直到完全随机化。然后&#xff0c;它通过逐步减少噪声来恢复图像&#xff0c;同时使用一个神经网…...

Python、PHP和Java下的反序列化漏洞复现实例

环境准备 这篇文章旨在用于网络安全学习&#xff0c;请勿进行任何非法行为&#xff0c;否则后果自负。 python反序列化 p83 CTF夺旗 Python考点SST&反序列化&字符串_正经人_____的博客-CSDN博客 php反序列化 p84 CTF夺旗-PHP弱类型&异或取反&序列化&…...

html的使用

一,HBuilder –1,使用 直接解压就可以用, 创建项目: 直接点击 新建项目,输入项目名和选中项目存放位置,创建. 创建资源: 选中项目,右键,新建… 二,HTML –1,概述 是超文本标记语言,专门用来制作网页的. 超文本: 网页中可以包含各种类型的元素.包括: 文字,数字,符号,图片,音频,…...

docker linux(centos 7) 安装

这是个目录 1:安装1:手动安装(适用于centos7)之一2:手动安装(适用于centos7)之二3&#xff1a;一键安装docker4:二进制安装1&#xff1a;下载二进制包2&#xff1a;解压3&#xff1a;移动文件4&#xff1a;后台运行docker5&#xff1a;测试 dicker命令表999&#xff1a;遇到的问…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...