git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCHv3 00/15] replace_object.c: rename to use dash in file name

From
Stefan Beller <sbeller@google.com>
Date
Apr 12, 2018, 00:21 UTC
Message-ID
<20180412002118.102976-1-sbeller@google.com>
In-Reply-To
<20180409224533.17764-1-sbeller@google.com>
v3:
* interdiff below,
  the only changes are renaming the variable 
  -       struct ref_store *main_ref_store;
  +       struct ref_store *refs;
  in struct repository.
  as well as dropping the file rename patch.
* improved commit messages from discussion on the single patches.

v2: This applies on top of a merge of origin/bc/object-id and origin/sb/packfiles-in-repository, both of which are pending merge to master. It is also available at https://github.com/stefanbeller/git/tree/object-store-3

* removed whitespaces as noted by Stolee
* incorporated Renes patch as the first patch of this series
  (It may go independently if this series takes too long)
* Adressed Erics concern regarding sloppy commit messages
  (removed #Conflict markers), typo in comment
* I did not drop the main_ from the ref store, yet, as asked by Duy.

Thanks, Stefan

v1: This applies on top of 464416a2eaadf84d2bfdf795007863d03b222b7c (sb/packfiles-in-repository). It is also available at https://github.com/stefanbeller/git/tree/object-store-3

This series will bring the replacement mechanism (git replace) into the object store.

The first patches are cleaning up a bit, and patches 6-19 are converting one function at a time using the tick-tock pattern with the #define trick. See cfc62fc98c (sha1_file: add repository argument to link_alt_odb_entry, 2018-03-23) for explanation.

Thanks, Stefan

René Scharfe (1):
  replace_object: use oidmap
Stefan Beller (14):
  replace-object: move replace_map to object store
  object-store: move lookup_replace_object to replace-object.h
  replace-object: eliminate replace objects prepared flag
  replace-object: check_replace_refs is safe in multi repo environment
  refs: add repository argument to get_main_ref_store
  refs: add repository argument to for_each_replace_ref
  replace-object: add repository argument to prepare_replace_object
  replace-object: add repository argument to do_lookup_replace_object
  replace-object: add repository argument to lookup_replace_object
  refs: store the main ref store inside the repository struct
  refs: allow for_each_replace_ref to handle arbitrary repositories
  replace-object: allow prepare_replace_object to handle arbitrary
    repositories
  replace-object: allow do_lookup_replace_object to handle arbitrary
    repositories
  replace-object: allow lookup_replace_object to handle arbitrary
    repositories
 builtin/mktag.c           |  3 +-
 builtin/pack-refs.c       |  3 +-
 builtin/replace.c         |  4 +-
 cache.h                   | 19 --------
 environment.c             |  2 +-
 object-store.h            |  8 ++++
 object.c                  |  3 +-
 refs.c                    | 80 ++++++++++++++++----------------
 refs.h                    |  4 +-
 refs/files-backend.c      |  4 --
 replace-object.h          | 36 +++++++++++++++
 replace_object.c          | 97 ++++++++++-----------------------------
 repository.h              |  3 ++
 revision.c                |  5 +-
 sha1_file.c               |  7 +--
 streaming.c               |  3 +-
 t/helper/test-ref-store.c |  3 +-
 17 files changed, 134 insertions(+), 150 deletions(-)
 create mode 100644 replace-object.h
$ git diff github/object-store-3
 diff --git c/Makefile w/Makefile
index 94e0bf47b1..de4b8f0c02 100644
--- c/Makefile
+++ w/Makefile
@@ -871,7 +871,7 @@ LIB_OBJS += refs/packed-backend.o
 LIB_OBJS += refs/ref-cache.o
 LIB_OBJS += ref-filter.o
 LIB_OBJS += remote.o
-LIB_OBJS += replace-object.o
+LIB_OBJS += replace_object.o
 LIB_OBJS += repository.o
 LIB_OBJS += rerere.o
 LIB_OBJS += resolve-undo.o
diff --git c/refs.c w/refs.c
index bed5f88405..9b56fa9b81 100644
--- c/refs.c
+++ w/refs.c
@@ -1651,11 +1651,11 @@ static struct ref_store *ref_store_init(const char *gitdir,
 
 struct ref_store *get_main_ref_store(struct repository *r)
 {
-       if (r->main_ref_store)
-               return r->main_ref_store;
+       if (r->refs)
+               return r->refs;
 
-       r->main_ref_store = ref_store_init(r->gitdir, REF_STORE_ALL_CAPS);
-       return r->main_ref_store;
+       r->refs = ref_store_init(r->gitdir, REF_STORE_ALL_CAPS);
+       return r->refs;
 }
 
 /*
diff --git c/refs/files-backend.c w/refs/files-backend.c
index bec8e30e9e..5c76a75817 100644
--- c/refs/files-backend.c
+++ w/refs/files-backend.c
@@ -61,10 +61,6 @@ struct ref_lock {
        struct object_id old_oid;
 };
 
-/*
- * Future: need to be in "struct repository"
- * when doing a full libification.
- */
 struct files_ref_store {
        struct ref_store base;
        unsigned int store_flags;
diff --git c/replace-object.c w/replace_object.c
similarity index 100%
rename from replace-object.c
rename to replace_object.c
diff --git c/repository.h w/repository.h
index 7d0710b273..e6e00f541b 100644
--- c/repository.h
+++ w/repository.h
@@ -27,7 +27,7 @@ struct repository {
        struct raw_object_store *objects;
 
        /* The store in which the refs are held. */
-       struct ref_store *main_ref_store;
+       struct ref_store *refs;
 
        /*
         * Path to the repository's graft file.
-- 
2.17.0.484.g0c8726318c-goog
Previous: Stefan BellerNext: Stefan Beller
Message 74 of 91 in “object-store refactoring 3 (replace objects, main ref store)”
  1. 00/19 object-store refactoring 3 (replace objects, main ref store)Stefan Beller, Apr 6, 2018
  2. 01/19 replace_object.c: rename to use dash in file nameStefan Beller, Apr 6, 2018
  3. 02/19 replace-object: move replace_object to object storeStefan Beller, Apr 6, 2018
  4. Derrick StoleeApr 9, 2018
  5. 03/19 object-store: move lookup_replace_object to replace-object.hStefan Beller, Apr 6, 2018
  6. 08/19 replace-object: add repository argument to replace_object_posStefan Beller, Apr 6, 2018
  7. 09/19 replace-object: add repository argument to register_replace_objectStefan Beller, Apr 6, 2018
  8. 11/19 replace-object: add repository argument to do_lookup_replace_objectStefan Beller, Apr 6, 2018
  9. 12/19 replace-object: add repository argument to lookup_replace_objectStefan Beller, Apr 6, 2018
  10. 13/19 refs: store the main ref store inside the repository structStefan Beller, Apr 6, 2018
  11. Eric SunshineApr 7, 2018
  12. 15/19 replace-object: allow replace_object_pos to handle arbitrary repositoriesStefan Beller, Apr 6, 2018
  13. 14/19 refs: allow for_each_replace_ref to handle arbitrary repositoriesStefan Beller, Apr 6, 2018
  14. 17/19 replace-object: allow prepare_replace_object to handle arbitrary repositoriesStefan Beller, Apr 6, 2018
  15. 16/19 replace-object: allow register_replace_object to handle arbitrary repositoriesStefan Beller, Apr 6, 2018
  16. 19/19 replace-object: allow lookup_replace_object to handle arbitrary repositoriesStefan Beller, Apr 6, 2018
  17. 18/19 replace-object: allow do_lookup_replace_object to handle arbitrary repositoriesStefan Beller, Apr 6, 2018
  18. 10/19 replace-object: add repository argument to prepare_replace_objectStefan Beller, Apr 6, 2018
  19. 04/19 replace-object: move replace objects prepared flag to object storeStefan Beller, Apr 6, 2018
  20. 07/19 refs: add repository argument to for_each_replace_refStefan Beller, Apr 6, 2018
  21. 05/19 replace-object: check_replace_refs is safe in multi repo environmentStefan Beller, Apr 6, 2018
  22. 06/19 refs: add repository argument to get_main_ref_storeStefan Beller, Apr 6, 2018
  23. Eric SunshineApr 7, 2018
  24. Stefan BellerApr 9, 2018
  25. René ScharfeApr 7, 2018
  26. Stefan BellerApr 9, 2018
  27. Duy NguyenApr 7, 2018
  28. Stefan BellerApr 9, 2018
  29. Derrick StoleeApr 9, 2018
  30. 00/16 object-store refactoring 3 (replace objects, main ref store)Stefan Beller, Apr 9, 2018
  31. 01/16 replace_object: use oidmapStefan Beller, Apr 9, 2018
  32. Junio C HamanoApr 10, 2018
  33. 03/16 replace-object: move replace_map to object storeStefan Beller, Apr 9, 2018
  34. Junio C HamanoApr 10, 2018
  35. 02/16 replace_object.c: rename to use dash in file nameStefan Beller, Apr 9, 2018
  36. Junio C HamanoApr 10, 2018
  37. Stefan BellerApr 10, 2018
  38. 0/6 Rename files to use dashes instead of underscoresStefan Beller, Apr 10, 2018
  39. 1/6 write_or_die.c: rename to use dashes in file nameStefan Beller, Apr 10, 2018
  40. 2/6 unicode_width.h: rename to use dash in file nameStefan Beller, Apr 10, 2018
  41. 3/6 exec_cmd: rename to use dash in file nameStefan Beller, Apr 10, 2018
  42. 5/6 sha1_file.c: rename to use dash in file nameStefan Beller, Apr 10, 2018
  43. 6/6 replace_object.c: rename to use dash in file nameStefan Beller, Apr 10, 2018
  44. 4/6 sha1_name.c: rename to use dash in file nameStefan Beller, Apr 10, 2018
  45. Stefan BellerApr 10, 2018
  46. Johannes SchindelinApr 10, 2018
  47. Stefan BellerApr 10, 2018
  48. brian m. carlsonApr 11, 2018
  49. 04/16 object-store: move lookup_replace_object to replace-object.hStefan Beller, Apr 9, 2018
  50. 06/16 replace-object: check_replace_refs is safe in multi repo environmentStefan Beller, Apr 9, 2018
  51. Junio C HamanoApr 10, 2018
  52. 05/16 replace-object: eliminate replace objects prepared flagStefan Beller, Apr 9, 2018
  53. Junio C HamanoApr 10, 2018
  54. René ScharfeApr 10, 2018
  55. 07/16 refs: add repository argument to get_main_ref_storeStefan Beller, Apr 9, 2018
  56. Michael HaggertyApr 10, 2018
  57. Stefan BellerApr 10, 2018
  58. 08/16 refs: add repository argument to for_each_replace_refStefan Beller, Apr 9, 2018
  59. 09/16 replace-object: add repository argument to prepare_replace_objectStefan Beller, Apr 9, 2018
  60. 13/16 refs: allow for_each_replace_ref to handle arbitrary repositoriesStefan Beller, Apr 9, 2018
  61. 12/16 refs: store the main ref store inside the repository structStefan Beller, Apr 9, 2018
  62. Brandon WilliamsApr 9, 2018
  63. Stefan BellerApr 9, 2018
  64. Brandon WilliamsApr 9, 2018
  65. Michael HaggertyApr 10, 2018
  66. Stefan BellerApr 10, 2018
  67. 15/16 replace-object: allow do_lookup_replace_object to handle arbitrary repositoriesStefan Beller, Apr 9, 2018
  68. 14/16 replace-object: allow prepare_replace_object to handle arbitrary repositoriesStefan Beller, Apr 9, 2018
  69. 16/16 replace-object: allow lookup_replace_object to handle arbitrary repositoriesStefan Beller, Apr 9, 2018
  70. 11/16 replace-object: add repository argument to lookup_replace_objectStefan Beller, Apr 9, 2018
  71. 10/16 replace-object: add repository argument to do_lookup_replace_objectStefan Beller, Apr 9, 2018
  72. Brandon WilliamsApr 9, 2018
  73. Stefan BellerApr 9, 2018
  74. 00/15 replace_object.c: rename to use dash in file nameStefan Beller, Apr 12, 2018
  75. 01/15 replace_object: use oidmapStefan Beller, Apr 12, 2018
  76. 02/15 replace-object: move replace_map to object storeStefan Beller, Apr 12, 2018
  77. 03/15 object-store: move lookup_replace_object to replace-object.hStefan Beller, Apr 12, 2018
  78. 05/15 replace-object: check_replace_refs is safe in multi repo environmentStefan Beller, Apr 12, 2018
  79. 07/15 refs: add repository argument to for_each_replace_refStefan Beller, Apr 12, 2018
  80. 04/15 replace-object: eliminate replace objects prepared flagStefan Beller, Apr 12, 2018
  81. 13/15 replace-object: allow prepare_replace_object to handle arbitrary repositoriesStefan Beller, Apr 12, 2018
  82. 12/15 refs: allow for_each_replace_ref to handle arbitrary repositoriesStefan Beller, Apr 12, 2018
  83. 14/15 replace-object: allow do_lookup_replace_object to handle arbitrary repositoriesStefan Beller, Apr 12, 2018
  84. 15/15 replace-object: allow lookup_replace_object to handle arbitrary repositoriesStefan Beller, Apr 12, 2018
  85. 06/15 refs: add repository argument to get_main_ref_storeStefan Beller, Apr 12, 2018
  86. 11/15 refs: store the main ref store inside the repository structStefan Beller, Apr 12, 2018
  87. 08/15 replace-object: add repository argument to prepare_replace_objectStefan Beller, Apr 12, 2018
  88. 09/15 replace-object: add repository argument to do_lookup_replace_objectStefan Beller, Apr 12, 2018
  89. 10/15 replace-object: add repository argument to lookup_replace_objectStefan Beller, Apr 12, 2018
  90. Derrick StoleeApr 12, 2018
  91. Stefan BellerApr 9, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.