Lar*_*lke 6 git continuous-integration pull-request git-lfs
由于git-lfs需要一些手动设置(安装git-lfs,运行git lfs install一次),这可能导致开发人员无法正确提交git-lfs跟踪的文件类型。我想检查一下我们的持续集成系统上的拉取请求。
如何检查所有git-lfs跟踪和提交的文件都是指针?有一个检查,例如在重新设置基准时运行,但不能作为cli命令使用。
我想要这样的东西:
$ git clone https://...
$ [git lfs check-for-pointers]
Encountered 35 file(s) that should have been pointers, but weren't:
file1.png
...
Run Code Online (Sandbox Code Playgroud)
Git LFS 没有办法在本地执行此操作,但如果您想查看对它的支持,可以在 GitHub 存储库上打开一个问题。同时,您可以使用如下技术实现这一点:
git ls-files | git check-attr --stdin filter | \
awk -F': ' '$3 ~ /lfs/ { print $1}' | \
xargs -L1 sh -c 'git cat-file blob "HEAD:$0" | \
git lfs pointer --check --stdin || { echo "$0"; false; }'
Run Code Online (Sandbox Code Playgroud)
如果此命令产生任何输出,则存在无效的指针文件,它应该打印它是哪个文件。如果一切正常,它也将退出零,如果有损坏的文件,它也将退出零。
这确实有一个限制,即它不处理包含冒号空格或换行符的文件名;如果这很重要,您将不得不使用该-z选项并通过perl或ruby代替awk.