Thread (55 messages) flat view 55 messages, 5 authors, 2017-09-14

Re: [PATCH v5 00/40] Add initial experimental external ODB support

From: Lars Schneider <hidden>
Date: 2017-09-10 12:30:21

On 03 Aug 2017, at 10:18, Christian Couder [off-list ref] wrote:

...

* The "helpers" (registered commands)

Each helper manages access to one external ODB.

There are 2 different modes for helper:

 - Helpers configured using "odb.<odbname>.scriptCommand" are
   launched each time Git wants to communicate with the <odbname>
   external ODB. This is called "script mode".

 - Helpers configured using "odb.<odbname>.subprocessCommand" are
   launched launched once as a sub-process (using sub-process.h), and
   Git communicates with them using packet lines. This is called
   "process mode".
I am curious, why would we support two modes? Wouldn't that increase
the maintenance cost? Wouldn't the subprocess command be superior?
I imagine the script mode eases testing, right?!

...

These odb refs point to a blob that is stored in the Git
repository and contain information about the blob stored in the
external odb. This information can be specific to the external odb.
The repos can then share this information using commands like:

`git fetch origin "refs/odbs/<odbname>/*:refs/odbs/<odbname>/*"`

At the end of the current patch series, "git clone" is teached a
"--initial-refspec" option, that asks it to first fetch some specified
refs. This is used in the tests to fetch the odb refs first.

This way only one "git clone" command can setup a repo using the
external ODB mechanism as long as the right helper is installed on the
machine and as long as the following options are used:

 - "--initial-refspec <odbrefspec>" to fetch the odb refspec
 - "-c odb.<odbname>.command=<helper>" to configure the helper
The "odb" config could, of course, go into the global git config. 
The odbrefspec is optional, right?

I have the impression there are a number of topics on the list
that tackle the "many/big objects in a Git repo" problem. Is
there a write up about the status of them, how they relate
to each other, and what the current problems are? 
I found the following but it looks abandoned:
https://github.com/jrn/git-large-repositories

- Lars
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help