Meta开源新工具啊,Git地位危险了?

news2025/7/25 9:24:40

程序员宝藏库:https://gitee.com/sharetech_lee/CS-Books-Store

从事编程开发的同学,绝大多数都会和版本控制系统打交道。

提到版本控制系统,目前比较主流的就是Git和SVN,尤其是Git,使用最为广泛。

关于Git和SVN之间关系不太清楚的同学可以看一下我的另外一篇作品,详细的介绍了这两款主流的版本控制系统。

https://www.zhihu.com/question/25491925/answer/2582045829

从关于Git的绝大多数反馈来看,目前的版本控制系统在可用性方面还存在很多不足之处,开发人员在维护代码库时会逐渐变得越来越复杂,经常不得不用一些复杂的命令来处理一件非常简单的事情。

而近期Meta(Facebook)开源了一款新的版本控制工具Sapling,这款工具已经构建并在内部开发10年,终于在近期开源,可以看得出来,最近Github Star数增长非常快。

img

前面提到目前Git的问题,对用户很不友好,尤其是初学者,需要花费大量的时间去了解Git的用法,往往为了处理一件简单的事情就要花费很多功夫,有时候如果对命令理解不够透彻还容易造成严重后果。

兼容Git

img

Sapling出现的主要目标就是为了解决这个问题,它能够兼容Git,很多基础命令和Git很相近,用过Git的同学会发现,像克隆、提交、修改等都会很熟悉,因为Samling的涉及之处的思想就是让命令变得简单易用,而且,它没有暂存区概念,本地分支名称可选,在周边使用方面也做了很多优化。

smartlog

img

smartlog是Sapling比较重要的命令之一,也是整个用户体验的核心,它通过简单执行Sapling命令,就可以看到所有本地提交。

  • 你当前在哪里?
  • 重要的远程分支在哪里?
  • 哪些文件发生了变化?
  • 那些提交是旧版本?哪些是新版本?

此外,smartlog 隐藏了所有你不关心的信息,例如,不重要的远程分支、不相关的提交。

视图模式

img

另外,清晰的视图对比现如今的版本控制系统是非常有价值的突破,通过视图能够直观地查看运行命令前后的效果,这样对于新手,能够 更加清楚自己操作的影响。

错误修复

除此之外,修改错误也变得简单很多,这也是目前主流版本控制系统的弱点和痛点。有时候想要从错误的修改中恢复会变得异常麻烦,需要理解很多复杂的命令,而Sapling的设计只需要一些简单的撤掉就可以恢复。

img

这就相当于Python之于C++,更加贴近我们自然语言的理解范畴,例如,通过sl undo、sl redo、sl uncommit 和 sl unamend 等命令可以轻松撤消许多操作。像 sl hide 和 sl unhide 这样的命令允许你简单而安全地隐藏提交并使它们恢复原来的样子。

上面提到的这些重点都集中在用户体验方面,除了这些之外,它在版本控制的底层也做了很多优化,例如,堆栈操作、数据压缩、代码审查,都做了很多改进,感兴趣的同学可以深入了解一下。

传送门

Github地址:https://github.com/facebook/sapling

使用文档:https://sapling-scm.com/docs/introduction/

建议大家有空可以多浏览Github,有很多好用的开源免费工具。但是,目前Github上项目多如牛毛,而且刷榜现在也非常严重,想要找到优质的项目变得越来越难。这里,给大家推荐Github上一个非常不错的项目《DevWeekly》,每周五晚上定期更新,这个项目每周都会精挑细选一些优质的开源项目,涵盖C++、JAVA、JavaScript、Python、Go等不同编程语言。此外,还有一些开源工具、优秀的技术文章

https://github.com/Jackpopc/DevWeekly

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

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

相关文章

python绘制Bubble气泡图pltscatter

python绘制Bubble气泡图pltscatter 先上结果: 基础语法: Axes.scatter(x, y**,** sNone**,** cNone**,** markerNone**,** cmapNone**,** normNone**,** vminNone**,** vmaxNone**,** alphaNone**,** linewidthsNone**,** , edgecolorsNone,* plotnonf…

nVisual 场景搭建所需接口

使用nVisua在创建新的项目步骤是搭建场景、创建对象、创建对象连接,本章小编带大家先了解搭建场景需要的接口。 场景搭建可根据自身项目需要搭建园区、建筑、楼层、机房这几类场景。分别用到了地图场景创建接口、CAD场景创建接口、静态图片背景创建接口。 1.地图场…

企业内训系统源码,为企业量身定制学习平台

如何进行企业内训系统开发?不同的直播平台的功能是不同的,企业的发展与员工的素质、能力、工作人效等不可分割,如何提高员工的工作能力,企业内部培训是离不开的,那么企业内训系统如何开发?怎么做一个企业学…

Spring Cloud面试题

什么是Spring Cloud Spring Cloud是目前最常用的微服务开发框架(微服务的特点就是"模块化、功能化",微服务架构的本质是将原来的整体项目划分成多个功能模块,每个功能模块都可以独立运行提供服务),它利用Sp…

wps和office可以同时装吗?

wps和office是很多用户都在使用的办公软件,那就有小白用户问了一台电脑可以存在wps和office吗?两个软件兼容吗?wps和office性质上都是办公软件,但是并不算重复,因此是可以同时安装的。 wps和office能同时安装吗 答&…

合并多个PDF怎么合并?建议学会这几个合并方法

你们平时工作的时候,看到自己的电脑桌面有很多文档文件,会不会觉得很杂乱?如果不将这些资料好好整理一番,都不能好好完成接下来的工作。其实如果是同种类型的PDF文件,我们可以将它们合并,这样既可以归类&am…

STM32单片机DS18B20测温液晶1602显示例程(Proteus仿真+程序)

编号:21 STM32单片机DS18B20测温液晶1602显示例程 功能描述: 本设计由STM32F103C8T6单片机最小系统DS18B20温度传感器1602液晶显示模块组成。 1、主控制器是STM32F103C8T6单片机 2、DS1820温度传感器测量温度 3、1602液晶显示温度,保留一位…

理解Linux32位机器下虚拟地址到物理地址的转化

文章目录前言一、基本概念介绍二、虚拟地址到物理地址的转化过程总结前言 简要介绍LINUX32位系统下虚拟地址到物理地址的转化过程。 一、基本概念介绍 在32位机器下,IO的基本单位是块(块:4kb),在程序编译成可执行程序时也划分好了以4kb为单…

Linux的前世今生

14天学习训练营导师课程: 互联网老辛《 符合学习规律的超详细linux实战快速入门》 努力是为了不平庸~ 学习有些时候是枯燥的,但收获的快乐是加倍的,欢迎记录下你的那些努力时刻(学习知识点/题解/项目实操/遇到的bug/等等&#xf…

使用STM32CubeMX实现按下按键,电平反转

需提前学习:使用STM32CubeMX实现LED闪烁 目录 原理图分析 按键部分原理图分析 LED部分原理图分析 STM32CubeMX配置 关于STM32CubeMXSYS的Debug忘记配置Serial Wire处理办法 GPIO配置 LED的GPIO配置 KEY1配置 关于PA0后面这个WKUP是什么? 那么啥…

Linux开发工具(4)——Makefile

文章目录Makefilemakefile语法makefile原理Linux小程序倒计时小程序进度条程序Makefile Makefile是Linux下的项目自动化构建工具。 Makefile包含两部分,make是一个指令,makefile是一个文件。 在makefile这个文件里面需要写两部分内容: 依赖…

【LeetCode】891.子序列宽度之和

**> ## 题目描述 一个序列的 宽度 定义为该序列中最大元素和最小元素的差值。 给你一个整数数组 nums ,返回 nums 的所有非空 子序列 的 宽度之和 。由于答案可能非常大,请返回对 109 7 取余 后的结果。 子序列 定义为从一个数组里删除一些&#xff…

Scala009--Scala中的数据结构【映射】

目录 一,概述 二,map的声明 1,不可变map 三,HashMap的声明 1,可变hashmap 四,map常用函数 1,查看map中的元素个数 size 2,获取map集合中key对应的value值 1)使…

react源码中的hooks

今天,让我们一起深入探究 React Hook 的实现方法,以便更好的理解它。但是,它的各种神奇特性的不足是,一旦出现问题,调试非常困难,这是由于它的背后是由复杂的堆栈追踪(stack trace)支…

更新后的python seaborn用于科研图绘

python seaborn 0.12 数据科学和科研绘图的人离不开R的ggplot2,尽管python已经有了诸如matplotlib、seaborn等强大绘图包,兼有basemap、cartopy等空间数据可视化能力,但相较于R的ggplot,总感觉欠缺了点东西。 前不久seaborn更新…

Ubuntu系统安装

一、制作启动盘 首先格式化U盘,格式选NTFS 制作启动盘,这里使用的是ultraISO,也是使用最多的方式。 打开文件,选中下载好的镜像iso文件。 启动 -> 写入硬盘映像 选择自己的U盘,写入方式选择 USB-HDD,隐…

进程地址空间详解

文章目录空间布局图首先有一个问题,我们曾经学过的程序地址空间是内存吗???为什么fork()会返回两个值先来看一下一个代码的现象在这里插入图片描述在C/C中我们看到的地址是物理地址吗?为什么操作系统不让我直接看到物理…

SpringBoot整合RabbitMQ

RabbitMQ安装部署详情可见&#xff1a;RabbitMQ简介及在Linux中安装部署&#xff08;yum&#xff09; 一、导入pom.xml依赖 <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.8.0</versio…

简单的抓包

验证TCP/IP协议栈结构、帧结构 准备&#xff1a; 用到的软件&#xff1a;科来网络分析系统、putty 1&#xff09;准备两台虚拟机&#xff08;我这里准备windows2003、7&#xff09;&#xff0c;并让两台虚拟机可以互相通信&#xff08;配置IP&#xff0c;让他们处于同一局域网…

基于SSM的网络教学(作业)管理系统

1、项目介绍 基于SSM的网络教学&#xff08;作业&#xff09;管理系统拥有三种角色&#xff1a;管理员、教师和学生 管理员&#xff1a;教师管理、学生管理、课程管理、教学信息管理、作业管理、试卷管理、试题管理、论坛管理、系统管理、考试管理等 教师&#xff1a;课程信…