From: David Lang Date: Mon, 10 Mar 2014 16:28:10 GMT Subject: Re: [RFC/WIP] Pluggable reference backends Message-ID: In-Reply-To: <87k3c2820l.fsf@fencepost.gnu.org> On Mon, 10 Mar 2014, David Kastrup wrote: > Jeff King writes: > >> On Mon, Mar 10, 2014 at 07:30:45AM -0700, Shawn Pearce wrote: >> >>>> * Store references in a SQLite database, to get correct transaction >>>> handling. >>> >>> No to SQLLite in git-core. Using it from JGit requires building >>> SQLLite and a JNI wrapper, which makes JGit significantly less >>> portable. I know SQLLite is pretty amazing, but implementing >>> compatibility with it from JGit will be a big nightmare for us. >> >> That seems like a poor reason not to implement a pluggable feature for >> git-core. If we implement it, then a site using only git-core can take >> advantage of it. Sites with JGit cannot, and would use a different >> pluggable storage mechanism that's supported by both. But if we don't >> implement, it hurts people using only git-core, and it does not help >> sites using JGit at all. > > Of course, the basic premise for this feature is "let's assume that our > file and/or operating system suck at providing file system functionality > at file name granularity". There have been two historically approaches > to that problem that are not independent: a) use Linux b) kick Linus. As a note, if this is done properly, it could allow for plugins that connect to the underlying storage system (similar to the Facebook Mecurial change) Even for those who don't have the $$$$$ storage arrays, there may be other storage specific hacks that can be done to detect that files haven't changed. For example, with btrfs and you compile into a different directory thatn your source, you may be able to detect that things didn't change by the fact that the filesystem didn't have to do a rewrite of the parent node. David Lang