This version incorporates many changes suggested by Michael Haggerty, Junio, Jonathan Nieder, Eric Sunshine, and Jeff King. I think I have addressed of the comments that were sent to me. Those that I chose not to incorporate, I responded to on the mailing list. Thanks for all of the feed back so far. In response to comments, I did the following: I incorporated Michael's use child_process for recursive checkouts patch. I fixed some formatting and convention (extern) errors. I removed a bit of dead code. I added checks to ensure that submodules have the same backend as parent modules; this turned up a bunch of weird stuff, which was mostly fixed by the above. I rewrote the ref splitting code along the lines suggested by Michael. Now we split symbolic-ref updates as well as separating updates by backend. Documentation clarifications. Some spelling/grammar fixes. In addition (and in part inspired by these comments), I made the following changes: In general, I tried to simplify alternate ref backend selection code. The major API change is to remove the backend init function. There was no right place to call this function; if it got called too early, we might not yet know what repo we're talking about, and if it got called too late, other backend functions would fail. So now the convention is that backends must initialize themselves on first call. This is a little irritating, but does work. I added a patch to make git-svn support alternate ref backends. I re-tested with the usual test hacks and have no new failures (although testing did turn up one minor missed update to transport.c; I think I must have missed some of the test hacks in the last round). This version fixes one silly bug in lmdb_delete_refs that I noticed while testing. David Turner (17): refs: add do_for_each_per_worktree_ref refs: add methods for reflog refs: add method for initial ref transaction commit refs: add method for delete_refs refs: add methods to init refs db refs: add method to rename refs refs: make lock generic refs: move duplicate check to common code refs: allow log-only updates refs: resolve symbolic refs first refs: always handle non-normal refs in files backend init: allow alternate backends to be set for new repos refs: check submodules ref storage config refs: allow ref backend to be set for clone svn: learn ref-storage argument refs: add LMDB refs backend refs: tests for lmdb backend Michael Haggerty (1): clone: use child_process for recursive checkouts Ronnie Sahlberg (3): refs: add a backend method structure with transaction functions refs: add methods for misc ref operations refs: add methods for the ref iterators .gitignore | 1 + Documentation/config.txt | 7 + Documentation/git-clone.txt | 5 + Documentation/git-init-db.txt | 2 +- Documentation/git-init.txt | 7 +- Documentation/technical/refs-lmdb-backend.txt | 52 + Documentation/technical/repository-version.txt | 5 + Makefile | 12 + builtin/clone.c | 19 +- builtin/init-db.c | 40 +- builtin/submodule--helper.c | 2 +- cache.h | 2 + config.c | 29 + configure.ac | 33 + contrib/workdir/git-new-workdir | 3 + git-submodule.sh | 13 + git-svn.perl | 6 +- path.c | 29 +- refs.c | 453 +++++- refs.h | 17 + refs/files-backend.c | 389 +++-- refs/lmdb-backend.c | 2049 ++++++++++++++++++++++++ refs/refs-internal.h | 128 +- setup.c | 23 +- t/t0001-init.sh | 24 + t/t1460-refs-lmdb-backend.sh | 1109 +++++++++++++ t/t1470-refs-lmdb-backend-reflog.sh | 359 +++++ t/t1480-refs-lmdb-submodule.sh | 85 + t/test-lib.sh | 1 + test-refs-lmdb-backend.c | 64 + 30 files changed, 4762 insertions(+), 206 deletions(-) create mode 100644 Documentation/technical/refs-lmdb-backend.txt create mode 100644 refs/lmdb-backend.c create mode 100755 t/t1460-refs-lmdb-backend.sh create mode 100755 t/t1470-refs-lmdb-backend-reflog.sh create mode 100755 t/t1480-refs-lmdb-submodule.sh create mode 100644 test-refs-lmdb-backend.c -- 2.4.2.749.g730654d-twtrsrc -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html