List, please review

This series is called backend-struct-db and is also available at

This series is built on and follows after the series

This series does not change any logic or behaviour but mainly just shuffles
code around and adds method pointers for the backend functions.

The first patch adds a new public function for checking if a refname is
available or not. This function is needed not because we want to have
different is_refname_available semantics for different backends, we don't,
but because its implementation is quite dependant on the backend type.

15 of the patches, the refs-common.c patches, focuses on moving all backend
agnostic refs functions to a common file. This file will contain all
backend agnostic refs functions.

The last 6 patches adds a backend structure with the methods we need to
describe a pluggable backend. Currently we only have one built in backend,
the current files based backend. These patches do not change any of the
behavior other than that we now call the methods through backend specific
wrapper functions rather than calling them directly.

At this stage we now have a defined set of methods needed for a refs
backend and we can start building and adding new types of ref backends
to git.

Version 3:
- Rework the patches so that we host the common functions in refs.c
  instead of refs-common.c
Version 2:
- Do not use C99 style initializers as suggested by David Turner.
- Make head_ref_namespaced a common function instead of a backend function

Ronnie Sahlberg (23):
  refs.c: create a public function for is_refname_available
  refs-be-files.c: rename refs to refs-be-files
  refs.c: add a new refs.c file to hold all common refs code
  refs.c: move update_ref to refs.c
  refs.c: move delete_ref to the common code
  refs.c: move rename_ref to the common code
  refs.c: move read_ref_at to the common refs file
  refs.c: move the hidden refs functions to the common code
  refs.c: move dwim and friend functions to the common refs code
  refs.c: move warn_if_dangling_symref* to the common code
  refs.c: move read_ref, read_ref_full and ref_exists to the common code
  refs.c: move resolve_refdup to common
  refs.c: move check_refname_component to the common code
  refs.c: move is_branch to the common code
  refs.c: move names_conflict to the common code
  refs.c: move prettify_refname to the common code
  refs.c: move ref iterators to the common code
  refs.c: move head_ref_namespaced to the common code
  refs-be-files.c: add a backend method structure with transaction
  refs-be-files.c: add reflog backend methods
  refs-be-files.c: add methods for misc ref operations
  refs-be-files.c: add methods for head_ref*
  refs-be-files.c: add methods for the ref iterators

 Makefile        |    1 +
 refs-be-files.c | 3330 +++++++++++++++++++++++++++++++++++++++++
 refs.c          | 4457 +++++++++----------------------------------------------
 refs.h          |  107 ++
 4 files changed, 4110 insertions(+), 3785 deletions(-)
 create mode 100644 refs-be-files.c


To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to
More majordomo info at

Reply via email to