问题背景

2024-03-03
一篇微服务系统测试工具的论文,事后发现自己一开始的理解有问题,导致自己算的预期值和论文中正确的值不一样。

测试工具原型的依赖定义有缺失,默认可能会用当前最新版,但时过境迁”最新版“变化会导致不兼容,因为不熟悉Python具体原因不确定。

工具的测试结果通过屏幕输出,我希望保存下来,但最大的单个日志文件比较大,超过Github支持的100MB,提示用LFS。

问题解决

安装Git LFS

git-lfs 项目 中的文档中有安装命令

对于 Ubuntu 系统:

(. /etc/lsb-release &&
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh |
sudo env os=ubuntu dist="${DISTRIB_CODENAME}" bash)

sudo apt-get install git-lfs

在Git配置LFS

参考Git LFS官网

执行以下命令,每个用户账户只需执行一次:

git lfs install

在项目中使用LFS

# Git LFS 追踪文件
## 追踪一类文件
git lfs track "*.psd"
## 追踪指定文件(以我的项目为例)
git lfs track netflix/functional/test_get_homepage-analysis.log.tar.gz
# 追踪文件会在 .gitattributes 加一条,因此需要同时暂存此文件
git add .gitattributes
# 正常暂存被追踪的文件,提交和推送
git add file.psd
git commit -m "Add design file"
git push origin main

查看Github上的Git LFS相关信息

在 Settings - Billing and plans - Plans and usage 页面
在这里插入图片描述
可以看到最多允许的大小(似乎不会实时更新?)(我的有学生优惠,但LFS似乎和免费版一样)
在这里插入图片描述
升级的价格(不便宜)
在这里插入图片描述

遇到的问题

不通过LFS提交大文件时的错误提示

推送到Github错误时的提示信息,除了提示用LFS,似乎还包括pre-receive hook declined,当时我是用push -f(不提倡)推送的,这个提示还有一种可能时Github存储库禁止对此分支的push -f。

Git代理配置

重装过一次宿主机,导致虚拟机IP变了,其中git使用宿主机的代理服务IP没有相应修改,发生错误,提示信息包含:

proxyconnect tcp: dial tcp 192.168.134.1:7890: connect: connection refused

提示信息还包含以下内容:

Remote “origin” does not support the LFS locking API. Consider disabling it with:
  $ git config 'lfs.https://github.com/AlbertLiangzt/learn.git/info/lfs.locksverify' false

Git 似乎有bug,因为推送失败是LFS通过Git代理推送时代理配置错误,不是远程"origin"不支持LFS,所以这个提示是的。

配置Git代理相关命令

git config --global https.proxy http://192.168.80.1:7890
git config --global https.proxy http://192.168.80.1:7890
git config --global --unset http.proxy
git config --global --unset https.proxy

LFS 超出配额

batch response: This repository is over its data quota. Account responsible for LFS bandwidth should purchase more data packs to restore access.

最大的一个日志有2G多,用了LFS会超出配置(1G),换成压缩后的(40+MB,实际已经不需要Git LFS)。

tar -czvf netflix/functional/test_get_homepage-analysis.log.tar.gz netflix/functional/test_get_homepage-analysis.log

TODO

用于绕过 Github 文件大小限制的工具(Git扩展,与Git LFS类似)

Github单文件最大100MB,LFS又有配额,价格不便宜。
也许可以实现一个工具,支持配置分割方式,提交时分割提交,签出时合并回来?
我的突发奇想,真这么做可能算滥用,可能被封号

参考资料

Github - git-lfs
Github - git-lfs安装文档
git-lfs

CSDN: proxyconnect refused
CSDN: git push 报错 pre-receive hook declined
git 设置和取消代理

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐