0%

最近项目组很多新项目都使用到了 Git LFS, 解决了 Git 大文件提交容易导致仓库尺寸爆炸的问题.

Git LFS: 简单来说就是用来存储源码仓大文件的, 会把大文件放在"别的地方"存储, 保持源码仓的 Size.

有必要学习一下基础用法.

安装

这个东西可以看成是 Git 的一个扩展插件, 一般安装比较新的 Git 之后, 都自带这个插件.

可以使用命令查看 Lfs 版本:

git lfs version

使用

  1. 启用 LFS 功能
git lfs install

这个命令单个用户只需要执行一次, 后续提交都会自动使用 LFS 功能.

  1. 将文件向 LFS 提交
git lfs track path/file.bin

这个操作会修改 .gitattributes 文件, 这个文件记录了 LFS 管理文件的信息.
文件路径也可以使用通配符 * 来匹配多个文件.

  1. 提交文件
git add .gitattributes path/file.bin
git commit -m "add file.bin"

需要同时提交 .gitattributes 和 二进制文件, 否则 LFS 无法识别.

  1. 推送到远程仓库
git push origin master
  1. 其他参考
    使用命令 git lfs, 想知道的都有写:
git lfs help

也可以去官网瞅瞅: https://git-lfs.com/

证书问题

LFS 内部使用的 HTTP 协议操作大文件, 上传下载什么的会访问源码仓的 API. 一些仓库证书是自签的, 会报证书错误.

Remote "origin" does not support the LFS locking API. Consider disabling it with:
  $ git config lfs.https://xxxx/org/project.git/info/lfs.locksverify false
Uploading LFS objects:   0% (0/1), 0 B | 0 B/s, done
batch response: Post https://xxxx/org/project.git/info/lfs/objects/batch: x509: certificate signed by unknown authority
error: failed to push some refs to 'ssh://git@xxxx/org/project.git.git'

可以通过配置不验证证书来绕过:

# 单个项目配置
git config http.sslVerify false
# 全局配置
git config --global http.sslVerify false

参考

在之前的博客中介绍了一个差分包工具 zstd(虽然说人家的专业是压缩软件,谁让它的差分能力那么出众呢)。

使用 Ztsd 代替 bsdiff/bspatch 差分还原文件

这货很能打,用起来也很爽。但是有个痛点就是制作差分包的时候有文件大小限制:不支持大于 2G 的文件。

但是在使用中经常遇到这种情况,为了彻底不再忍受 bsdiff 那蜗牛般的速度,遂决定通过修改 ztsd 源代码来支持对 2G 文件的支持。

阅读全文 »

最近想写点桌面小工具,语言已经确定了用 Go,于是把市面上常见的几个 UI 库简单对比了一下。

除了对比,也会记录一下我对它们的主观评价,便于下次使用的时候参考。

评价的目标是用于个人使用,会考虑性能、资源消耗、依赖以及上手难度等维度。性能数据只做浅度分析,场景是跑一个 Demo 用例,分析磁盘、内存、CPU的消耗情况。

阅读全文 »

Windows 上编译 GUNC/C++ 代码,需要用到 MinGW-w64 的编译环境。

MinGW-w64 的全称是 Minimalist GNU for Windows 64-bit,其主要目标是提供一个最小化的、可以运行 GNU 工具链的 Windows 环境。它包括了许多常见的 GNU 工具和库,如 GCC(GNU Compiler Collection,GNU 编译器集合)GDB(GNU Debugger,GNU 调试器) 等,以及一个 Windows 兼容的 POSIX API 实现。这些工具允许开发者在 Windows 上编写、编译和调试 C/C++ 等编程语言的代码,同时也能运行许多在 Unix 系统上编写的脚本和工具。

MinGW-w64MinGW 的升级版,MinGW 是一个 GNU 编译器链,它提供了 CC++ 编译器,以及一些其他工具,如 makegdb 等。MinGW-w64MinGW 的一个分支,它提供了与 MinGW 相同的功能,但同时支持 64 位32 位 的编译。

阅读全文 »

最近有个需求:有一个系统应用,在某个业务时执行了一些 shell 命令,操作系统中的网络接口。随着版本迭代需求演进,要把这些 shell 命令迁移到 framework 中执行。

想当然的认为没什么难度,但属实是踩了一坑。

阅读全文 »

Go 的模块默认从 GOPROXY 环境变量获取。这个变量默认指向 https://proxy.golang.org/

很遗憾正常情况国内是无法访问的。

好在国内和国外有一些镜像站,可以配置之后使用。

阅读全文 »

Git for WindowsGit 官方的 Windows 版本,它是基于 MSYS2-Mingw-w64 的,所以 Git for Windows 也是一个微型的 MSYS2

但是 Git for Windows 安装后却没有 MSYS2 的包管理器 pacman,可以考虑手动安装。

网上大部分博客的描述都已经过时,有的需要去外网下载依赖。折腾之后记录一种简易的安装方式。

阅读全文 »

Android SDK 当中原来有一个 Tools 工具包,全名 Android SDK Tools,其中的 DDMSuiautomatorviewer 是原来那个时代必不可少的工具。现在这些功能已经被 Android Studio 替代,导致工具没人维护,很有可能已经运行不起了来了。

有时候需要临时调试一下应用,搭 AndroidStudio 环境比较麻烦。可以考虑继续用工具包内的工具来调试。

阅读全文 »