我们的LookAt
存储库由于意外地将二进制文件,图像等提交给它而变得难以处理。回购中目前没有大文件,但回购历史中有大文件。
我的计划是从我们的git
历史记录中删除这些大型文件,我已经找到了许多好的资源和SO答案(https://rtyley.github.io/bfg-repo-cleaner/,How to remove/delete a large file from commit history in Git repository?,{{ 3}})。
我的主要问题是我们有许多我们的回购贡献者(托管在Bitbucket上),我担心一旦我将大文件从历史中删除,我们的贡献者将git
将大文件备份到远程仓库的历史记录。
具体来说,https://help.github.com/articles/removing-files-from-a-repository-s-history/文档声明:
此时,您已准备好让每个人都放弃他们旧的回购副本,并为新的原始数据做新的克隆。删除所有旧克隆是最好的,因为它们会有一些不想冒险回到新清理仓库的风险。
所以,我的问题有两个:
谢谢!
答案 0 :(得分:1)
对于git,您可以在origin
repo上使用预接收挂钩。收到push
后,钩子就会运行;如果钩子不喜欢推动的内容,它会拒绝它。因此,您可以编写一个查找大型对象或某些文件类型的脚本,或者您认为最有效地执行您的要求的任何内容。请参阅git hook文档(https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks)。
对于bitbucket,来自https://confluence.atlassian.com/bitbucketserverkb/how-to-create-a-simple-hook-in-bitbucket-server-779171711.html:
Bitbucket Server有两种主要方法可以创建一个钩子。
推荐的方法是使用我们的Java插件开发框架创建插件。尽管强烈反对,但也可以在Bitbucket Server实例的文件系统中创建服务器端Git挂钩。
该页面继续解释他们推荐的设置钩子的方法。