From: Junio C Hamano Date: Tue, 07 Jun 2016 19:23:40 GMT Subject: Re: [PATCH v2 4/4] bundle v3: the beginning Message-ID: In-Reply-To: Christian Couder writes: > Git can store its objects only in the form of loose objects in > separate files or packed objects in a pack file. > To be able to better handle some kind of objects, for example big > blobs, it would be nice if Git could store its objects in other object > databases (ODB). > > To do that, this patch series makes it possible to register commands, > using "odb..command" config variables, to access external > ODBs. Each specified command will then be called the following ways: Hopefully it is done via a cheap RPC instead of forking/execing the command for each and every object lookup. > - " have": the command should output the sha1, size and > type of all the objects the external ODB contains, one object per > line. Why size and type at this point is needed by the clients? That is more expensive to compute than just a bare list of object names. > - " get ": the command should then read from the > external ODB the content of the object corresponding to and > output it on stdout. The type and size should be given at this point. > - " put ": the command should then read > from stdin an object and store it in the external ODB. Is ODB required to sanity check that matches what the data hashes down to? If this thing is primarily to offload large blobs, you might also want not "get" but "checkout " to bypass Git entirely, but I haven't thought it through.