]> git.ipfire.org Git - thirdparty/git.git/commitdiff
Merge branch 'ab/refs-various-fixes'
authorJunio C Hamano <gitster@pobox.com>
Tue, 29 Mar 2022 19:22:02 +0000 (12:22 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 29 Mar 2022 19:22:02 +0000 (12:22 -0700)
Code clean-up.

* ab/refs-various-fixes:
  refs debug: add a wrapper for "read_symbolic_ref"
  packed-backend: remove stub BUG(...) functions
  misc *.c: use designated initializers for struct assignments
  refs: use designated initializers for "struct ref_iterator_vtable"
  refs: use designated initializers for "struct ref_storage_be"

1  2 
attr.c
object-file.c
refs/files-backend.c
refs/packed-backend.c

diff --combined attr.c
index 1626cade8bd4e4084fe05f01ba32c26286a75cf9,9ad12578cce1dce4e5ea5de7a1fc5dbd13312bb2..21e4ad25ada625885ebcc524facf6a9ce816d39e
--- 1/attr.c
--- 2/attr.c
+++ b/attr.c
@@@ -14,6 -14,7 +14,6 @@@
  #include "utf8.h"
  #include "quote.h"
  #include "thread-utils.h"
 -#include "dir.h"
  
  const char git_attr__true[] = "(builtin)true";
  const char git_attr__false[] = "\0(builtin)false";
@@@ -79,7 -80,7 +79,7 @@@ static int attr_hash_entry_cmp(const vo
   * Access to this dictionary must be surrounded with a mutex.
   */
  static struct attr_hashmap g_attr_hashmap = {
-       HASHMAP_INIT(attr_hash_entry_cmp, NULL)
+       .map = HASHMAP_INIT(attr_hash_entry_cmp, NULL),
  };
  
  /*
diff --combined object-file.c
index 62ebe236c90a85641b8c806f2cdbebe18fa6307e,f0a75b3ff1e17354fe166be4167e0721ad2be536..b254bc50d702922ecdb43b492e3415269c6af351
@@@ -274,10 -274,11 +274,11 @@@ static struct cached_object 
  static int cached_object_nr, cached_object_alloc;
  
  static struct cached_object empty_tree = {
-       { EMPTY_TREE_SHA1_BIN_LITERAL },
-       OBJ_TREE,
-       "",
-       0
+       .oid = {
+               .hash = EMPTY_TREE_SHA1_BIN_LITERAL,
+       },
+       .type = OBJ_TREE,
+       .buf = "",
  };
  
  static struct cached_object *find_cached_object(const struct object_id *oid)
@@@ -1889,16 -1890,11 +1890,16 @@@ void hash_object_file(const struct git_
  /* Finalize a file on disk, and close it. */
  static void close_loose_object(int fd)
  {
 -      if (!the_repository->objects->odb->will_destroy) {
 -              if (fsync_object_files)
 -                      fsync_or_die(fd, "loose object file");
 -      }
 +      if (the_repository->objects->odb->will_destroy)
 +              goto out;
  
 +      if (fsync_object_files > 0)
 +              fsync_or_die(fd, "loose object file");
 +      else
 +              fsync_component_or_die(FSYNC_COMPONENT_LOOSE_OBJECT, fd,
 +                                     "loose object file");
 +
 +out:
        if (close(fd) != 0)
                die_errno(_("error when closing loose object file"));
  }
diff --combined refs/files-backend.c
index bc81b525914a525c9b567fc3aa1a0d089c1d125a,aa4e7182b6eea306eebacdbe0a60363d24b51e0e..95acab78eef34c6f7a8323220b46485a47d45336
@@@ -822,9 -822,9 +822,9 @@@ static int files_ref_iterator_abort(str
  }
  
  static struct ref_iterator_vtable files_ref_iterator_vtable = {
-       files_ref_iterator_advance,
-       files_ref_iterator_peel,
-       files_ref_iterator_abort
+       .advance = files_ref_iterator_advance,
+       .peel = files_ref_iterator_peel,
+       .abort = files_ref_iterator_abort,
  };
  
  static struct ref_iterator *files_ref_iterator_begin(
@@@ -1809,7 -1809,6 +1809,7 @@@ static int write_ref_to_lockfile(struc
        fd = get_lock_file_fd(&lock->lk);
        if (write_in_full(fd, oid_to_hex(oid), the_hash_algo->hexsz) < 0 ||
            write_in_full(fd, &term, 1) < 0 ||
 +          fsync_component(FSYNC_COMPONENT_REFERENCE, get_lock_file_fd(&lock->lk)) < 0 ||
            close_ref_gently(lock) < 0) {
                strbuf_addf(err,
                            "couldn't write '%s'", get_lock_file_path(&lock->lk));
@@@ -2232,9 -2231,9 +2232,9 @@@ static int files_reflog_iterator_abort(
  }
  
  static struct ref_iterator_vtable files_reflog_iterator_vtable = {
-       files_reflog_iterator_advance,
-       files_reflog_iterator_peel,
-       files_reflog_iterator_abort
+       .advance = files_reflog_iterator_advance,
+       .peel = files_reflog_iterator_peel,
+       .abort = files_reflog_iterator_abort,
  };
  
  static struct ref_iterator *reflog_iterator_begin(struct ref_store *ref_store,
@@@ -3292,30 -3291,30 +3292,30 @@@ static int files_init_db(struct ref_sto
  }
  
  struct ref_storage_be refs_be_files = {
-       NULL,
-       "files",
-       files_ref_store_create,
-       files_init_db,
-       files_transaction_prepare,
-       files_transaction_finish,
-       files_transaction_abort,
-       files_initial_transaction_commit,
-       files_pack_refs,
-       files_create_symref,
-       files_delete_refs,
-       files_rename_ref,
-       files_copy_ref,
-       files_ref_iterator_begin,
-       files_read_raw_ref,
-       files_read_symbolic_ref,
-       files_reflog_iterator_begin,
-       files_for_each_reflog_ent,
-       files_for_each_reflog_ent_reverse,
-       files_reflog_exists,
-       files_create_reflog,
-       files_delete_reflog,
-       files_reflog_expire
+       .next = NULL,
+       .name = "files",
+       .init = files_ref_store_create,
+       .init_db = files_init_db,
+       .transaction_prepare = files_transaction_prepare,
+       .transaction_finish = files_transaction_finish,
+       .transaction_abort = files_transaction_abort,
+       .initial_transaction_commit = files_initial_transaction_commit,
+       .pack_refs = files_pack_refs,
+       .create_symref = files_create_symref,
+       .delete_refs = files_delete_refs,
+       .rename_ref = files_rename_ref,
+       .copy_ref = files_copy_ref,
+       .iterator_begin = files_ref_iterator_begin,
+       .read_raw_ref = files_read_raw_ref,
+       .read_symbolic_ref = files_read_symbolic_ref,
+       .reflog_iterator_begin = files_reflog_iterator_begin,
+       .for_each_reflog_ent = files_for_each_reflog_ent,
+       .for_each_reflog_ent_reverse = files_for_each_reflog_ent_reverse,
+       .reflog_exists = files_reflog_exists,
+       .create_reflog = files_create_reflog,
+       .delete_reflog = files_delete_reflog,
+       .reflog_expire = files_reflog_expire
  };
diff --combined refs/packed-backend.c
index 55a1426e67d0ccdd3ccda437f89efd62a441255a,310c2a720269bbdae8a1e0ed16ba95288e0c4013..66c4574c99d7fcc346943224b94cfef06e2e0902
@@@ -911,9 -911,9 +911,9 @@@ static int packed_ref_iterator_abort(st
  }
  
  static struct ref_iterator_vtable packed_ref_iterator_vtable = {
-       packed_ref_iterator_advance,
-       packed_ref_iterator_peel,
-       packed_ref_iterator_abort
+       .advance = packed_ref_iterator_advance,
+       .peel = packed_ref_iterator_peel,
+       .abort = packed_ref_iterator_abort
  };
  
  static struct ref_iterator *packed_ref_iterator_begin(
@@@ -1262,8 -1262,7 +1262,8 @@@ static int write_with_updates(struct pa
                goto error;
        }
  
 -      if (close_tempfile_gently(refs->tempfile)) {
 +      if (fsync_component(FSYNC_COMPONENT_REFERENCE, get_tempfile_fd(refs->tempfile)) ||
 +          close_tempfile_gently(refs->tempfile)) {
                strbuf_addf(err, "error closing file %s: %s",
                            get_tempfile_path(refs->tempfile),
                            strerror(errno));
@@@ -1592,106 -1591,36 +1592,36 @@@ static int packed_pack_refs(struct ref_
        return 0;
  }
  
- static int packed_create_symref(struct ref_store *ref_store,
-                              const char *refname, const char *target,
-                              const char *logmsg)
- {
-       BUG("packed reference store does not support symrefs");
- }
- static int packed_rename_ref(struct ref_store *ref_store,
-                           const char *oldrefname, const char *newrefname,
-                           const char *logmsg)
- {
-       BUG("packed reference store does not support renaming references");
- }
- static int packed_copy_ref(struct ref_store *ref_store,
-                          const char *oldrefname, const char *newrefname,
-                          const char *logmsg)
- {
-       BUG("packed reference store does not support copying references");
- }
  static struct ref_iterator *packed_reflog_iterator_begin(struct ref_store *ref_store)
  {
        return empty_ref_iterator_begin();
  }
  
- static int packed_for_each_reflog_ent(struct ref_store *ref_store,
-                                     const char *refname,
-                                     each_reflog_ent_fn fn, void *cb_data)
- {
-       BUG("packed reference store does not support reflogs");
-       return 0;
- }
- static int packed_for_each_reflog_ent_reverse(struct ref_store *ref_store,
-                                             const char *refname,
-                                             each_reflog_ent_fn fn,
-                                             void *cb_data)
- {
-       BUG("packed reference store does not support reflogs");
-       return 0;
- }
- static int packed_reflog_exists(struct ref_store *ref_store,
-                              const char *refname)
- {
-       BUG("packed reference store does not support reflogs");
-       return 0;
- }
- static int packed_create_reflog(struct ref_store *ref_store,
-                               const char *refname, struct strbuf *err)
- {
-       BUG("packed reference store does not support reflogs");
- }
- static int packed_delete_reflog(struct ref_store *ref_store,
-                              const char *refname)
- {
-       BUG("packed reference store does not support reflogs");
-       return 0;
- }
- static int packed_reflog_expire(struct ref_store *ref_store,
-                               const char *refname,
-                               unsigned int flags,
-                               reflog_expiry_prepare_fn prepare_fn,
-                               reflog_expiry_should_prune_fn should_prune_fn,
-                               reflog_expiry_cleanup_fn cleanup_fn,
-                               void *policy_cb_data)
- {
-       BUG("packed reference store does not support reflogs");
-       return 0;
- }
  struct ref_storage_be refs_be_packed = {
-       NULL,
-       "packed",
-       packed_ref_store_create,
-       packed_init_db,
-       packed_transaction_prepare,
-       packed_transaction_finish,
-       packed_transaction_abort,
-       packed_initial_transaction_commit,
-       packed_pack_refs,
-       packed_create_symref,
-       packed_delete_refs,
-       packed_rename_ref,
-       packed_copy_ref,
-       packed_ref_iterator_begin,
-       packed_read_raw_ref,
-       NULL,
-       packed_reflog_iterator_begin,
-       packed_for_each_reflog_ent,
-       packed_for_each_reflog_ent_reverse,
-       packed_reflog_exists,
-       packed_create_reflog,
-       packed_delete_reflog,
-       packed_reflog_expire
+       .next = NULL,
+       .name = "packed",
+       .init = packed_ref_store_create,
+       .init_db = packed_init_db,
+       .transaction_prepare = packed_transaction_prepare,
+       .transaction_finish = packed_transaction_finish,
+       .transaction_abort = packed_transaction_abort,
+       .initial_transaction_commit = packed_initial_transaction_commit,
+       .pack_refs = packed_pack_refs,
+       .create_symref = NULL,
+       .delete_refs = packed_delete_refs,
+       .rename_ref = NULL,
+       .copy_ref = NULL,
+       .iterator_begin = packed_ref_iterator_begin,
+       .read_raw_ref = packed_read_raw_ref,
+       .read_symbolic_ref = NULL,
+       .reflog_iterator_begin = packed_reflog_iterator_begin,
+       .for_each_reflog_ent = NULL,
+       .for_each_reflog_ent_reverse = NULL,
+       .reflog_exists = NULL,
+       .create_reflog = NULL,
+       .delete_reflog = NULL,
+       .reflog_expire = NULL,
  };