HG Mercurial大文件扩展
专栏:偷懒小技巧 Feb. 5, 2024, 3:39 p.m. 184 阅读
本文介绍HG Mercurial的大文件扩展--large的用法
参考:https://wiki.mercurial-scm.org/LargefilesExtension

大文件有一些特点,不能压缩、版本之间的diff没有意义、也没法合并。这样的大文件用只保存文件版本差异的方式就不合适了,因为差异可能巨大。

用Mercurial的largefiles扩展可以解决这个问题,把大文件放在中心版本服务器上,而不是放在每个人的本地。使用时,你只需要从中心版本服务器直接拿指定的版本。

1. 状态

这个扩展与Mercurial 2.0及以后的版本一起发布。

2. 介绍

largefiles扩展让你可以在Mercurial里跟踪大文件,clone和pull时也不需要很大的网络带宽。这些新加的大文件,不是直接由mercurial管理,而是把大文件的不同版本直接用checksum区分,mercurial里跟踪这些checksum。通过这种方法,当你clone或者pull一个仓库时,只会下载当前版本的大文件。这样节省了硬盘,也节省了网络带宽。

第一步,在你的配置文件.hg/hgrc里增加大文件扩展的设置:

[extensions]
largefiles =

当你往仓库里添增大文件时,用--large选项来指定当前是大文件。例如:

$ hg add --large thisfileislarge
$ hg commit -m 'add thisfileislarge, which is large, as a largefile'

当你push了一个版本到远程仓库,这个大文件也一起被上传了。这样,中心版本服务器就存储着这个大文件的每一个完整的备份。当然,远程中心仓库也需要打开支持大文件扩展的设置。

当你从中心版本仓库pull带有大文件的版本,看起来与pull普通的文件没有区别。然而,当你update时这些大文件才被下载下来,如果之前没有下载过。就是说,只有没有下载过,才会下载,这样就节省了网络带宽。

如果你的仓库里已经有大文件了,但没有设置largefiles扩展,那么,你可以用hg lfconvert命令来转换。

$ hg lfconvert --size 10 oldrepo newrepo

3. 配置

在配置文件中使能大文件扩展:

[extensions]
largefiles =

默认,超过10MB的文件会被认为是大文件。你可以通过largefiles.minsize来修改这个阈值。

[largefiles]
minsize = 2

或者用在hg add后面加--lfsize选项(单位MB):

$ hg add --lfsize 2

patterns后面加上空格分开的文件名,指定这些文件需要被当作大文件:

[largefiles]
patterns = **.jpg re:.*\.(png|bmp) library.zip content/audio/*

 

感谢阅读,更多文章点击这里:【专栏:偷懒小技巧】