LFS是Large File Storage的缩写,用了帮助git管理大的文件
原理:不同于git每次保存diff,对于git来说,如果是模型或者一些设计大文件,改变一点,对于仓库来说会增加很大的体积,不一会就能几个G。对于git lfs来说,在使用git lfs track命令后,git push的时候,git lfs会截取要管理的大文件,并将其传至git lfs的服务器中,从而减小仓库的体积。
好像在8版本之后,lfs功能是默认开启的。
本文,主要讲讲在日常具体操作GITLAB LFS时的两个细节。
一,.gitattributes文件内容
要让gitlab识别lfs文件,需要一个.gitattributes文件,我定义的内容如下,表示这些文件后缀,会被视为LFS文件。
*.zip filter=lfs diff=lfs merge=lfs -text
*.tar.gz filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.rar filter=lfs diff=lfs merge=lfs -text
识别LFS文件之后,gitlab是会给个特定的标识的。
二,jenkins拉取lfs文件时的设置
jenkins的2.73版本,拉取gitlab lfs时,要作如下的个性化设置(可以在pipeline syntax语法参考里测试)。
pipeline {
....
stages {
stage('Prepare Git Code') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '${BRANCH_TO_BUILD}']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'GitLFSPull']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'GitLab', url: '${GIT_URL}']]])
//git branch: '${BRANCH_TO_BUILD}', credentialsId: 'GitLab', url: '${GIT_URL}'
echo 'Preparing end..'
}
}
}
....
}