我可以只克隆 Git 存储库中大小低于指定限制的文件吗?
Can I clone only files in a Git repository whose sizes are below a specified limit?
我的任务是扫描内部 Git 存储库中的敏感信息(或不应 public 的信息)。
我的主要问题是一些开发人员已将大 blob (+100 MB) 提交到他们的 Git 存储库,这需要很长时间才能下载并且在扫描时被忽略。
有什么方法可以让 Git 只克隆大小低于指定限制的文件?如果没有,是否有更好的方法来扫描 Git 存储库中的敏感信息?
是的,这可以通过称为部分克隆的新功能实现。您可以在克隆时指定一个过滤器,Git 将根据该过滤器限制它获取的数据量。
例如,您可以执行以下操作,这将克隆 Git 存储库而不包含任何大于 100 MiB 的 blob:
git clone --filter=blob:limit=100m https://github.com/git/git.git
请注意,要执行此操作,您应该使用可用的最新版本 Git (2.26.2),并且您还需要有合适的服务器端实现。 GitHub 确实支持此功能,但其他服务器实现可能会也可能不会。
请注意,尽管 GitHub 确实支持部分克隆,但出于效率原因,它会限制可用的过滤器。不过,应该支持按大小限制 blob。
我的任务是扫描内部 Git 存储库中的敏感信息(或不应 public 的信息)。
我的主要问题是一些开发人员已将大 blob (+100 MB) 提交到他们的 Git 存储库,这需要很长时间才能下载并且在扫描时被忽略。
有什么方法可以让 Git 只克隆大小低于指定限制的文件?如果没有,是否有更好的方法来扫描 Git 存储库中的敏感信息?
是的,这可以通过称为部分克隆的新功能实现。您可以在克隆时指定一个过滤器,Git 将根据该过滤器限制它获取的数据量。
例如,您可以执行以下操作,这将克隆 Git 存储库而不包含任何大于 100 MiB 的 blob:
git clone --filter=blob:limit=100m https://github.com/git/git.git
请注意,要执行此操作,您应该使用可用的最新版本 Git (2.26.2),并且您还需要有合适的服务器端实现。 GitHub 确实支持此功能,但其他服务器实现可能会也可能不会。
请注意,尽管 GitHub 确实支持部分克隆,但出于效率原因,它会限制可用的过滤器。不过,应该支持按大小限制 blob。