List, Michael,

Please see
https://github.com/rsahlberg/git/tree/backend-struct-db-2
for an example of a pluggable backend for refs storage.

This series contain changes to make it possible to add new backends
for handling/storage of refs and implements one new backend :
refs-be-be.c .

This new backend offloads the actual refs handling to a small database
daemon with which ita talks via a very simple rpc protocol. That
daemon in turn then connects to the datastore and read/writes the
values to it.

By having an always running database daemon it will allow faster
startup of the git commands since they will now only need to connect
to a domain socket instead of having to traverse a potentially very
large number of files during the "build ref cache" phase.
Another nice feature is that it can allow running one single database
daemon and use it to host the refs for multiple independent git
repositoris (by using the new repository name config to distinguish
between them).

It can not yet apply to origin/* since it is based on some small
series that have yet not arrived there
and is still a wip. But if you want to test/look at what we could be
doing one day, please feel free to clone this repo.


FAQ:
Q:
This sound cool. How do I test this?

A:
1, Clone https://github.com/rsahlberg/git/tree/backend-struct-db-2 and
build git.

2, gcc refsd-tdb.c -o refsd-tdb -l tdb
3, ./refsd-tdb /tmp/refsd.socket /tmp /tmp/refsd.log

4, git clone --db-repo-name=ROCKet --db-socket=/tmp/refsd.socket <some-repo> foo

./foo should now contain a git repository that store its refs in a
separate database.
(teh databases are store under /tmp  so don't use this for anything
important because bad things happens to things stored under /tmp)


regards
ronnie sahlberg
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to