On Wed, Nov 28 2018, Bryan Turner wrote: > On Tue, Nov 27, 2018 at 3:47 PM Ævar Arnfjörð Bjarmason > <avarab@xxxxxxxxx> wrote: >> >> >> On Tue, Nov 27 2018, Bryan Turner wrote: >> >> > >> > Is there anything I can set, perhaps some invalid configuration >> > option/value, that will make "git gc" (most important) and "git >> > reflog" (ideal, but less important) fail when they're run in our >> > repositories? Hopefully at that point customers will reach out to us >> > for help _before_ they corrupt their repositories. >> >> You could fix this and so many other issues by just hanging up a "Is >> This Good For The Company?" banner up in Atlassian offices . > > Not sure I understand what this means, or what your goal was in saying > it. No one inside Atlassian is running these commands. I'm trying to > help save administrators from themselves, which reduces real world > end-user pain that comes from decisions made without fully > understanding the consequences. It feels like this comment is mocking > my earnest desire to help, and my genuine question looking for any > insight people more familiar with the code might be able to offer. > Perhaps I'm just missing the joke, but if it's an Office Space > reference it feels like it's in pretty poor taste. I (mis)read 'administrators' as being other people at Atlassian. Yeah it's a reference to Office Space. I meaning to poke some fun at the situation of having to defensively configure tools least co-workers run them the wrong way, which I'm sure we've all had to do at some point. I didn't mean any offense by it. >> >> But more seriously: >> >> $ stahp='Bryan.Turner.will.hunt.you.down.if.you.manually.run.gc' && git -c gc.pruneExpire=$stahp gc; git -c gc.reflogExpire=$stahp reflog expire >> error: Invalid gc.pruneexpire: 'Bryan.Turner.will.hunt.you.down.if.you.manually.run.gc' >> fatal: unable to parse 'gc.pruneexpire' from command-line config >> error: 'Bryan.Turner.will.hunt.you.down.if.you.manually.run.gc' for 'gc.reflogexpire' is not a valid timestamp >> fatal: unable to parse 'gc.reflogexpire' from command-line config > > Thanks for that! It looks like that does block both "git gc" and "git > reflog expire" without blocking "git pack-refs", "git repack" or "git > prune". Fantastic! The fact that it shows the invalid value means it > might also be possible to at least provide a useful hint that manual > GC is not safe. > > I appreciate your help, Ævar. No problem. I was going to add that you can set e.g. pack.windowMemory='some.message' to make this go for git-repack too, but it sounds like you don't want that. Is there a reason for why BitBucket isn't using 'git-gc'? Some other hosting providers use it, and if you don't run it with "expire now" or similarly aggressive non-default values on an active repository it won't corrupt anything.