From: Nickolai Belakovski <nbelakovski@xxxxxxxxx> Hi guys, Sorry I missed you at the contributor summit, but this is an idea I've been thinking of on my own for some time now, mostly in the context of dealing with large files as opposed to security issues. I've come to a lot of the same conclusions that this group has already come up with, namely * Using git replace functionality is a very obvious apth forward here * A list of 'revoked' (could I propose the word 'obliterated', in order to make the names consistent?) hashes needs to be maintained so that any functionality expecting the original object can figure out that it's not available. * This needs support from GitHub, Gitlab, etc. in order for it to work. I'm thinking that git prune gets updated to remove 'oblierated' objects, and when a git hosting service receives an updated list of obliterated objects, it just runs prune. Of course, there would need to be support for replace refs as well I've started working on a prototype/proof of concept. In the v1 it will do the following upon receiving a hash (i.e. git obliterate abc123): * Add it to the list of obliterated objects (I'm thinking just .git/obliterate, any issues with that?) * Create a new blob containing the content "This file was obliterated by $git.user on $today" and create a replace ref from the provided has to the hash of this new blob (so instead of an empty file, there's some info as to why the file is missing) * Run git prune (which will be modified to delete obliterated objects) It should just take a couple of days. If anyone is interested in joining, I'm livestreaming my work on twitch at https://www.twitch.tv/actinium226 from 1pm to 5pm Pacific time on weekdays. This version will still have some issues. As Damien pointed out, index doesn't handle replace, so the file will look modified, but I hope that having an initial prototype will help further discussion and get this feature closer to a state of being completed.