如何强制贡献者重新克隆我们的存储库?

时间:2018-05-24 11:10:51

标签: git bitbucket

我们的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/文档声明:

  

此时,您已准备好让每个人都放弃他们旧的回购副本,并为新的原始数据做新的克隆。删除所有旧克隆是最好的,因为它们会有一些不想冒险回到新清理仓库的风险。

所以,我的问题有两个:

  1. 有没有办法确保从repo的旧克隆推送不会重新引入大文件?
  2. 如果没有,有没有办法让旧克隆无法推动,因此需要所有贡献者从一个新的克隆开始?
  3. 谢谢!

1 个答案:

答案 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挂钩。

该页面继续解释他们推荐的设置钩子的方法。