我正在将git-fat和git一起使用来处理大型二进制文件。我要解决的问题是,如果大型二进制文件不会由git-fat处理,则要防止将它们添加到本地提交中。
我的方法是更新预提交以阻止所有二进制文件,并且仅在以下情况下允许文件:
git fat init
已运行git check-attr filter
以验证filter: fat
在输出中我想念这个吗?用git
和git-fat
例如,在二进制文件上调用git add
时,.git / fat / objects是否可以确定git-fat处理了文件?
答案 0 :(得分:3)
我想念这个吗?
最好在服务器端添加一个限制,这将限制/阻止推送的大小,从而防止可能落入裂缝的任何大型二进制文件通过。
要检测是否执行了git fat init
,只需查询git config filter.fat.clean
和git config filter.fat.smudge
的值即可。
git-fat的有趣之处在于,它不需要Git托管服务器本身的任何特殊功能/支持:大文件的存储/替换由本地过滤器处理。
同一文件管理的最新版本是 git lfs ,该版本也通过Git过滤器进行操作。
当然,最终的解决方案是Microsoft开发的VFS for Git,它不需要过滤器并且是完全自动化的,Git Virtual Filesystem是由Microsoft开发并逐渐合并回Git本身的。但是它确实需要支持该功能的Git回购托管服务器。
OP添加:
.git / fat / objects是否可以做任何事情来确定在文件上调用git add时git-fat处理了文件?
命令git fat verify确实检查了每个对象:可以对它进行调整以查找特定文件,并检查其与catalog_objects
之间的sha1。