All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH 00/19] object-store refactoring 3 (replace objects, main ref store)
@ 2018-04-06 23:21 Stefan Beller
  2018-04-06 23:21 ` [PATCH 01/19] replace_object.c: rename to use dash in file name Stefan Beller
                   ` (23 more replies)
  0 siblings, 24 replies; 91+ messages in thread
From: Stefan Beller @ 2018-04-06 23:21 UTC (permalink / raw)
  To: jonathantanmy; +Cc: git, Stefan Beller

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

Stefan Beller (19):
  replace_object.c: rename to use dash in file name
  replace-object: move replace_object to object store
  object-store: move lookup_replace_object to replace-object.h
  replace-object: move replace objects prepared flag to object store
  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 replace_object_pos
  replace-object: add repository argument to register_replace_object
  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 replace_object_pos to handle arbitrary
    repositories
  replace-object: allow register_replace_object 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

 Makefile                             |  2 +-
 builtin/mktag.c                      |  3 +-
 builtin/pack-refs.c                  |  3 +-
 builtin/replace.c                    |  4 +-
 cache.h                              | 19 -------
 environment.c                        |  2 +-
 object-store.h                       | 16 ++++++
 object.c                             |  3 +-
 refs.c                               | 80 ++++++++++++++--------------
 refs.h                               |  4 +-
 replace_object.c => replace-object.c | 66 +++++++++++------------
 replace-object.h                     | 35 ++++++++++++
 repository.h                         |  5 ++
 revision.c                           |  5 +-
 sha1_file.c                          |  7 +--
 streaming.c                          |  3 +-
 t/helper/test-ref-store.c            |  3 +-
 17 files changed, 149 insertions(+), 111 deletions(-)
 rename replace_object.c => replace-object.c (56%)
 create mode 100644 replace-object.h
 
 
 $ git diff 464416a2eaadf84d2bfdf795007863d03b222b7c..HEAD -- object-store.h repository.h
diff --git a/object-store.h b/object-store.h
index fef33f345f..be90c02db6 100644
--- a/object-store.h
+++ b/object-store.h
@@ -93,6 +93,22 @@ struct raw_object_store {
        struct alternate_object_database *alt_odb_list;
        struct alternate_object_database **alt_odb_tail;
 
+       /*
+        * Objects that should be substituted by other objects
+        * (see git-replace(1)).
+        */
+       struct replace_objects {
+               /*
+                * An array of replacements.  The array is kept sorted by the original
+                * sha1.
+                */
+               struct replace_object **items;
+
+               int alloc, nr;
+
+               unsigned prepared : 1;
+       } replacements;
+
        /*
         * private data
         *
diff --git a/repository.h b/repository.h
index 09df94a472..2922d3a28b 100644
--- a/repository.h
+++ b/repository.h
@@ -26,6 +26,11 @@ struct repository {
         */
        struct raw_object_store *objects;
 
+       /*
+        * The store in which the refs are hold.
+        */
+       struct ref_store *main_ref_store;
+
        /*
         * Path to the repository's graft file.
         * Cannot be NULL after initialization.

-- 
2.17.0.484.g0c8726318c-goog


^ permalink raw reply related	[flat|nested] 91+ messages in thread

end of thread, other threads:[~2018-04-12 11:43 UTC | newest]

Thread overview: 91+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-06 23:21 [RFC PATCH 00/19] object-store refactoring 3 (replace objects, main ref store) Stefan Beller
2018-04-06 23:21 ` [PATCH 01/19] replace_object.c: rename to use dash in file name Stefan Beller
2018-04-06 23:21 ` [PATCH 02/19] replace-object: move replace_object to object store Stefan Beller
2018-04-09 13:51   ` Derrick Stolee
2018-04-06 23:21 ` [PATCH 03/19] object-store: move lookup_replace_object to replace-object.h Stefan Beller
2018-04-06 23:21 ` [PATCH 04/19] replace-object: move replace objects prepared flag to object store Stefan Beller
2018-04-06 23:21 ` [PATCH 05/19] replace-object: check_replace_refs is safe in multi repo environment Stefan Beller
2018-04-06 23:21 ` [PATCH 06/19] refs: add repository argument to get_main_ref_store Stefan Beller
2018-04-07  6:53   ` Eric Sunshine
2018-04-09 18:51     ` Stefan Beller
2018-04-06 23:21 ` [PATCH 07/19] refs: add repository argument to for_each_replace_ref Stefan Beller
2018-04-06 23:21 ` [PATCH 08/19] replace-object: add repository argument to replace_object_pos Stefan Beller
2018-04-06 23:21 ` [PATCH 09/19] replace-object: add repository argument to register_replace_object Stefan Beller
2018-04-06 23:21 ` [PATCH 10/19] replace-object: add repository argument to prepare_replace_object Stefan Beller
2018-04-06 23:21 ` [PATCH 11/19] replace-object: add repository argument to do_lookup_replace_object Stefan Beller
2018-04-06 23:21 ` [PATCH 12/19] replace-object: add repository argument to lookup_replace_object Stefan Beller
2018-04-06 23:21 ` [PATCH 13/19] refs: store the main ref store inside the repository struct Stefan Beller
2018-04-07  6:54   ` Eric Sunshine
2018-04-06 23:21 ` [PATCH 14/19] refs: allow for_each_replace_ref to handle arbitrary repositories Stefan Beller
2018-04-06 23:21 ` [PATCH 15/19] replace-object: allow replace_object_pos " Stefan Beller
2018-04-06 23:21 ` [PATCH 16/19] replace-object: allow register_replace_object " Stefan Beller
2018-04-06 23:21 ` [PATCH 17/19] replace-object: allow prepare_replace_object " Stefan Beller
2018-04-06 23:21 ` [PATCH 18/19] replace-object: allow do_lookup_replace_object " Stefan Beller
2018-04-06 23:21 ` [PATCH 19/19] replace-object: allow lookup_replace_object " Stefan Beller
2018-04-07  4:58 ` [RFC PATCH 00/19] object-store refactoring 3 (replace objects, main ref store) René Scharfe
2018-04-09 17:44   ` Stefan Beller
2018-04-07  9:50 ` Duy Nguyen
2018-04-09 17:39   ` Stefan Beller
2018-04-09 13:58 ` Derrick Stolee
     [not found] ` <nycvar.QRO.7.76.6.1804091038430.55@ZVAVAG-6OXH6DA.rhebcr.pbec.zvpebfbsg.pbz>
2018-04-09 17:36   ` Stefan Beller
2018-04-09 22:45 ` [PATCHv2 00/16] " Stefan Beller
2018-04-09 22:45   ` [PATCH 01/16] replace_object: use oidmap Stefan Beller
2018-04-10  2:57     ` Junio C Hamano
2018-04-09 22:45   ` [PATCH 02/16] replace_object.c: rename to use dash in file name Stefan Beller
2018-04-10  3:00     ` Junio C Hamano
2018-04-10 17:57       ` Stefan Beller
2018-04-10 21:26       ` [PATCH 0/6] Rename files to use dashes instead of underscores Stefan Beller
2018-04-10 21:26         ` [PATCH 1/6] write_or_die.c: rename to use dashes in file name Stefan Beller
2018-04-10 21:26         ` [PATCH 2/6] unicode_width.h: rename to use dash " Stefan Beller
2018-04-10 21:26         ` [PATCH 3/6] exec_cmd: " Stefan Beller
2018-04-10 21:26         ` [PATCH 4/6] sha1_name.c: " Stefan Beller
2018-04-10 21:26         ` [PATCH 5/6] sha1_file.c: " Stefan Beller
2018-04-10 21:26         ` [PATCH 6/6] replace_object.c: " Stefan Beller
2018-04-10 21:28         ` [PATCH 0/6] Rename files to use dashes instead of underscores Stefan Beller
2018-04-10 22:39         ` Johannes Schindelin
2018-04-10 22:47           ` Stefan Beller
2018-04-11 23:13         ` brian m. carlson
2018-04-09 22:45   ` [PATCH 03/16] replace-object: move replace_map to object store Stefan Beller
2018-04-10  3:10     ` Junio C Hamano
2018-04-09 22:45   ` [PATCH 04/16] object-store: move lookup_replace_object to replace-object.h Stefan Beller
2018-04-09 22:45   ` [PATCH 05/16] replace-object: eliminate replace objects prepared flag Stefan Beller
2018-04-10  3:21     ` Junio C Hamano
2018-04-10  7:32     ` René Scharfe
2018-04-09 22:45   ` [PATCH 06/16] replace-object: check_replace_refs is safe in multi repo environment Stefan Beller
2018-04-10  3:37     ` Junio C Hamano
2018-04-09 22:45   ` [PATCH 07/16] refs: add repository argument to get_main_ref_store Stefan Beller
2018-04-10 13:36     ` Michael Haggerty
2018-04-10 18:27       ` Stefan Beller
2018-04-09 22:45   ` [PATCH 08/16] refs: add repository argument to for_each_replace_ref Stefan Beller
2018-04-09 22:45   ` [PATCH 09/16] replace-object: add repository argument to prepare_replace_object Stefan Beller
2018-04-09 22:45   ` [PATCH 10/16] replace-object: add repository argument to do_lookup_replace_object Stefan Beller
2018-04-09 22:45   ` [PATCH 11/16] replace-object: add repository argument to lookup_replace_object Stefan Beller
2018-04-09 22:45   ` [PATCH 12/16] refs: store the main ref store inside the repository struct Stefan Beller
2018-04-09 23:24     ` Brandon Williams
2018-04-09 23:29       ` Stefan Beller
2018-04-09 23:35         ` Brandon Williams
2018-04-10 14:02     ` Michael Haggerty
2018-04-10 18:38       ` Stefan Beller
2018-04-09 22:45   ` [PATCH 13/16] refs: allow for_each_replace_ref to handle arbitrary repositories Stefan Beller
2018-04-09 22:45   ` [PATCH 14/16] replace-object: allow prepare_replace_object " Stefan Beller
2018-04-09 22:45   ` [PATCH 15/16] replace-object: allow do_lookup_replace_object " Stefan Beller
2018-04-09 22:45   ` [PATCH 16/16] replace-object: allow lookup_replace_object " Stefan Beller
2018-04-09 23:25   ` [PATCHv2 00/16] object-store refactoring 3 (replace objects, main ref store) Brandon Williams
2018-04-09 23:31     ` Stefan Beller
2018-04-12  0:21   ` [PATCHv3 00/15] replace_object.c: rename to use dash in file name Stefan Beller
2018-04-12  0:21     ` [PATCH 01/15] replace_object: use oidmap Stefan Beller
2018-04-12  0:21     ` [PATCH 02/15] replace-object: move replace_map to object store Stefan Beller
2018-04-12  0:21     ` [PATCH 03/15] object-store: move lookup_replace_object to replace-object.h Stefan Beller
2018-04-12  0:21     ` [PATCH 04/15] replace-object: eliminate replace objects prepared flag Stefan Beller
2018-04-12  0:21     ` [PATCH 05/15] replace-object: check_replace_refs is safe in multi repo environment Stefan Beller
2018-04-12  0:21     ` [PATCH 06/15] refs: add repository argument to get_main_ref_store Stefan Beller
2018-04-12  0:21     ` [PATCH 07/15] refs: add repository argument to for_each_replace_ref Stefan Beller
2018-04-12  0:21     ` [PATCH 08/15] replace-object: add repository argument to prepare_replace_object Stefan Beller
2018-04-12  0:21     ` [PATCH 09/15] replace-object: add repository argument to do_lookup_replace_object Stefan Beller
2018-04-12  0:21     ` [PATCH 10/15] replace-object: add repository argument to lookup_replace_object Stefan Beller
2018-04-12  0:21     ` [PATCH 11/15] refs: store the main ref store inside the repository struct Stefan Beller
2018-04-12  0:21     ` [PATCH 12/15] refs: allow for_each_replace_ref to handle arbitrary repositories Stefan Beller
2018-04-12  0:21     ` [PATCH 13/15] replace-object: allow prepare_replace_object " Stefan Beller
2018-04-12  0:21     ` [PATCH 14/15] replace-object: allow do_lookup_replace_object " Stefan Beller
2018-04-12  0:21     ` [PATCH 15/15] replace-object: allow lookup_replace_object " Stefan Beller
2018-04-12 11:43     ` [PATCHv3 00/15] replace_object.c: rename to use dash in file name Derrick Stolee

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.