From: Stefan Beller Date: Fri, 08 May 2015 22:13:59 GMT Subject: Re: Please consider extending .gitignore to support setting of a file size limit Message-ID: In-Reply-To: <20150508070906.GC8248@paksenarrion.iveqy.com> On Fri, May 8, 2015 at 12:09 AM, Fredrik Gustafsson wrote: > On Fri, May 08, 2015 at 08:54:59AM +0200, Kevin Daudt wrote: >> My experience in #git is that people want to prevent other people >> accidentelly adding large files, resulting in all sorts of problems, >> which takes a lot of effort to fix if you're not an experienced user. > > I second this. In #git@freenode we often get people trying to reduce > repo size since they or a collegue accidental added a huge binary file. > > They do a filter branch and remove that file. However then they need to > do a forced push. And the person (the collegue) that didn't had enough > git experience to understand why it was a mistake to add a big file, now > ends up with having to sync with a rewritten remote. > > So I can really see that there's a demand for such a feature. However, I > wonder if this shouldn't just be a pre-recieve hook? > > If we want to inform the user, we might just add a pre-commit hook for > this. > > The problem with pre-commit hooks is distribution of them. As it is with > making this a configuration option. There's really no good way to share > configuration and hooks between git repos today as I know of. (Yes, I'm > aware of this beeing a hard problem due to security concerns). > Any problem in computer science can be solved with another layer of indirection they said. So: Maybe we can just distribute some good defaults (or your internal distribution for git can ship adapted versions of the default). And instead of just running a hook, maybe the clone/fetch could tell the client to enable these predefined hooks. so maybe we'd need a fetch capability "recommended-hooks" which could look like recommended-hooks=, The name would indicate what hook you're interested in such as .git/hooks/pre-commit-warn-huge-size.sample and the sha1 would be the sha1 of that default hook to ensure nobody has tampered with that script. I am not sure if we need the sha1, maybe that's overengineered. I mean trusting a default script is as much as trusting the git binary on your system, isn't it?