问题背景
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 设置和取消代理