由于 git-lfs 需要一些手动设置(安装 git-lfs,运行 git lfs install
一次),这可能导致开发人员无法正确提交 git-lfs 跟踪的文件类型。我想在我们的持续集成系统上检查 pull 请求。
如何检查所有 git-lfs 跟踪和提交的文件都是指针? There is a check这是运行例如当 rebase 时,但这不能作为 cli 命令使用。
我想要这样的东西:
$ git clone https://...
$ [git lfs check-for-pointers]
Encountered 35 file(s) that should have been pointers, but weren't:
file1.png
...
最佳答案
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; }'
如果此命令产生任何输出,则存在无效指针文件,它应该打印出它是哪个文件。如果一切正常,它也会退出零,如果文件损坏,它也会退出非零。
这确实有一个限制,即它不处理其中包含冒号空格或换行符的文件名;如果这很重要,你将不得不使用 -z
选项并通过 perl
运行或 ruby
而不是 awk
.
关于git - 如何检查所有 git-lfs 跟踪和提交的文件都是指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47072267/