写点什么

Mercurial 2.0 携 Largefile 插件发布

  • 2011-11-18
  • 本文字数:1011 字

    阅读完需:约 3 分钟

Selenic 发布了 Mercurial 2.0 ,这是他们三个月来对该 DVCS 工具的常规升级。

本次发布带来了 Largefile 插件——一种将集中式数据存储带入迥异的分布式版本管理系统的方式。鉴于 Mercurial 的 Revlog 存储机制并不能很好地契合二进制大文件的存储,Largefile 插件提供了一个集中式存储,二进制大文件可以从那里按需下载。

如果二进制大文件经常会被更新,那么在任何 DVCS 中存储它们,都可能会出现问题;甚至即便二进制文件可以通过增量压缩(比如,仅仅存储变更的部分)来存储,大文件也会很快地使资源库膨胀起来。此外,假如这些资源已经成为了资源库历史的一部分,它们无法在不影响内容哈希值的情况下从资源库中精简掉(prune),因此也就无法修改资源库的版本。

取决于使用的版本管理系统的不同而不同,是否将大资源文件存放在不同的分支(比如,不经常获取[fetch]的分支)会影响到复制出的资源库(而不是源资源库)。Mercurial 的 Largefile 插件使用了不同的方法,在复制出的资源库中提供了(从效果上)指向大文件的符号链接。

当前检出[checkout]的版本并没有必要包含这些大文件,它们并不会随着复制[clone]或者获取[fetch]/推送[push]的操作而下载。但是,如果检出某个包含了一个或者多个这样大文件链接的版本,Mercurial 会打开一个单独的链接以从集中式存储服务器下载内容。很明显,这意味着为了检出资源库的某些版本,Mecurial 需要能够连接到集中式存储服务器,但是本地的 Mercurial 复本将会保持上次下载的大文件的缓存,而且假如它们已经被下载,就可以不用再去从服务器获取。

hg add命令有了一个新选项--large,允许指定文件为大文件(因此把该文件存入“集中式的、但是缓存的、按需下载的”存储)。或者,可以设置一个确切的文件大小(默认是大于 10Mb)或者使用命名模式(比如,*.zip)来自动标记大文件。注意,资源库格式必须通过hg lfconvert命令升级,以利用新格式的优势。同时注意,追踪大文件状态的dirstate命令,在 Mercurial 2.0 中目前是被限制在 2Gb 以内,但有希望在 2.0 发布之后会发布补丁。

Mercurial 2.0 同时也带来了 graft 命 令——给 Mercurial 实现了 cherry pick 功能。它使用了合并[merge]的机理以判断哪些修改应该被呈现,然后再将它们零碎地移植过来,而不创建一个新的合并节点。与其他的 cherry-pick 实现一样,如果代码修改已经被复制过来,它将不会被重复复制。

查看英文原文 Mercurial 2.0 Released with LargeFiles extension

2011-11-18 08:201287
用户头像

发布了 76 篇内容, 共 25.0 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

从2021钉峰会,看钉钉生态背后的强大赋能力

ToB行业头条

钉钉

使用SpringCloud的openFeign组件踩坑纪实

小江

dubbo Feign spring-cloud

[译] D8 类库脱糖

Antway

6月日更

JAVA 面向对象 (十三)-- 关键字static

加百利

Java 6月日更

JavaScript学习(十一)---RegExp对象

空城机

JavaScript 大前端 6月日更

容器化 | 在 Kubernetes 上部署 RadonDB MySQL 集群

RadonDB

MySQL Kubernetes 容器

架构师实战营 模块七总结

代廉洁

架构实战营

网络攻防学习笔记 Day57

穿过生命散发芬芳

网络攻防 6月日更

Linux之nl命令

入门小站

Linux

可视化搭建的一些思考和实践

白玉兰开源

为什么 Python 没有函数重载?如何用装饰器实现函数重载?

Python猫

Python

冰泉奶茶香牙膏好不好?奶茶控的宝藏牙膏就是它

Geek_50a546

EasyRecovery——一款专业的数据恢复软件

淋雨

文件恢复 Easyrecovery破解 免费恢复软件 硬盘数据恢复

30分钟接入SDK 融云是如何让开发者做到开箱即用的?

融云 RongCloud

基于 Web 引擎扩展技术的 RTC 混合开发框架实践

白玉兰开源

大前端

前端 JavaScript 中的三种 for 循环语句总结

编程三昧

JavaScript 大前端 for循环

一步步设计版本控制系统

Java·课代表

git 版本控制 版本管理

APP 开发技术如何进行选型 ?

程序员海军

大前端 App 技术选型 APP开发

代码管理工具:Git和SVN

正向成长

git svn

AI论文解读:基于Transformer的多目标跟踪方法TrackFormer

华为云开发者联盟

预测 Transformer 多目标跟踪 TrackFormer 跟踪目标

为什么switch的case没有break不行

叫我阿柒啊

Switch case break

浩若烟海事半功倍|利用Docker容器技术构建自动化分布式web测试集群Selenium Grid

刘悦的技术博客

Docker Python3 测试 单元测试 测试环境 selenium

使用 Scala 宏解决对象转换

GrowingIO技术专栏

scala protobuf 元编程 macro

在线sitemap链接提取工具

入门小站

工具

数据结构——顺序表

若尘

数据结构 6月日更

计算机网络的 89 个核心概念

苹果看辽宁体育

后端 计算机网络 网络

页面制作的15个CSS技巧

devpoint

CSS css3 Flex 6月日更

Rust从0到1-自动化测试-测试组织

rust 单元测试 集成测试 自动化测试

12种mysql常见错误总结 +分析示例

李阿柯

MySQL 面试 常见问题

带你认识9种常用卷积神经网络

华为云开发者联盟

神经网络 深度学习 卷积神经网络 图像 卷积

全网最详细XSS跨站脚本攻击,不是过来打死我!!

网络安全学海

程序员 网络安全 信息安全 XSS 漏洞修复

Mercurial 2.0携Largefile插件发布_语言 & 开发_Alex Blewitt_InfoQ精选文章