All of lore.kernel.org
 help / color / mirror / Atom feed
From: Derrick Stolee <stolee@gmail.com>
To: Stefan Beller <sbeller@google.com>, jonathantanmy@google.com
Cc: git@vger.kernel.org, Jonathan Nieder <jrnieder@gmail.com>
Subject: Re: [PATCH 02/19] replace-object: move replace_object to object store
Date: Mon, 9 Apr 2018 09:51:39 -0400	[thread overview]
Message-ID: <9cf5ca7b-4837-8626-f4f6-f580fd33128b@gmail.com> (raw)
In-Reply-To: <20180406232136.253950-3-sbeller@google.com>

On 4/6/2018 7:21 PM, Stefan Beller wrote:
> Refs belong to particular repositories, so the replacements defined by
> them should belong to a particular repository as well.
>
> Move the definition of a single object replacement to a new header
> "replace-object.h". While at it replace the hardcoded 20 by GIT_MAX_RAWSZ.
>
> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
> Signed-off-by: Stefan Beller <sbeller@google.com>
> ---
>   object-store.h   | 14 ++++++++++++++
>   replace-object.c | 40 ++++++++++++++++++----------------------
>   replace-object.h |  9 +++++++++
>   3 files changed, 41 insertions(+), 22 deletions(-)
>   create mode 100644 replace-object.h

Throughout this commit, there appears to be an extra space inserted 
before 'the_repository'. Some are more obvious than others (such as a 
'free( the_repository->...)' but others are after the indentation.

> diff --git a/object-store.h b/object-store.h
> index fef33f345f..da639b3184 100644
> --- a/object-store.h
> +++ b/object-store.h
> @@ -93,6 +93,20 @@ 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;
> +	} replacements;
> +
>   	/*
>   	 * private data
>   	 *
> diff --git a/replace-object.c b/replace-object.c
> index 3e49965d05..a7eb31026e 100644
> --- a/replace-object.c
> +++ b/replace-object.c
> @@ -1,19 +1,11 @@
>   #include "cache.h"
> +#include "replace-object.h"
> +#include "object-store.h"
>   #include "sha1-lookup.h"
>   #include "refs.h"
> +#include "repository.h"
>   #include "commit.h"
>   
> -/*
> - * An array of replacements.  The array is kept sorted by the original
> - * sha1.
> - */
> -static struct replace_object {
> -	unsigned char original[20];
> -	unsigned char replacement[20];
> -} **replace_object;
> -
> -static int replace_object_alloc, replace_object_nr;
> -
>   static const unsigned char *replace_sha1_access(size_t index, void *table)
>   {
>   	struct replace_object **replace = table;
> @@ -22,7 +14,8 @@ static const unsigned char *replace_sha1_access(size_t index, void *table)
>   
>   static int replace_object_pos(const unsigned char *sha1)
>   {
> -	return sha1_pos(sha1, replace_object, replace_object_nr,
> +	return sha1_pos(sha1,  the_repository->objects->replacements.items,
> +			 the_repository->objects->replacements.nr,
>   			replace_sha1_access);
>   }
>   
> @@ -35,18 +28,21 @@ static int register_replace_object(struct replace_object *replace,
>   		if (ignore_dups)
>   			free(replace);
>   		else {
> -			free(replace_object[pos]);
> -			replace_object[pos] = replace;
> +			free( the_repository->objects->replacements.items[pos]);
> +			 the_repository->objects->replacements.items[pos] = replace;
>   		}
>   		return 1;
>   	}
>   	pos = -pos - 1;
> -	ALLOC_GROW(replace_object, replace_object_nr + 1, replace_object_alloc);
> -	replace_object_nr++;
> -	if (pos < replace_object_nr)
> -		MOVE_ARRAY(replace_object + pos + 1, replace_object + pos,
> -			   replace_object_nr - pos - 1);
> -	replace_object[pos] = replace;
> +	ALLOC_GROW( the_repository->objects->replacements.items,
> +		    the_repository->objects->replacements.nr + 1,
> +		    the_repository->objects->replacements.alloc);
> +	 the_repository->objects->replacements.nr++;
> +	if (pos <  the_repository->objects->replacements.nr)
> +		MOVE_ARRAY( the_repository->objects->replacements.items + pos + 1,
> +			    the_repository->objects->replacements.items + pos,
> +			    the_repository->objects->replacements.nr - pos - 1);
> +	 the_repository->objects->replacements.items[pos] = replace;
>   	return 0;
>   }
>   
> @@ -84,7 +80,7 @@ static void prepare_replace_object(void)
>   
>   	for_each_replace_ref(register_replace_ref, NULL);
>   	replace_object_prepared = 1;
> -	if (!replace_object_nr)
> +	if (!the_repository->objects->replacements.nr)
>   		check_replace_refs = 0;
>   }
>   
> @@ -113,7 +109,7 @@ const unsigned char *do_lookup_replace_object(const unsigned char *sha1)
>   
>   		pos = replace_object_pos(cur);
>   		if (0 <= pos)
> -			cur = replace_object[pos]->replacement;
> +			cur = the_repository->objects->replacements.items[pos]->replacement;
>   	} while (0 <= pos);
>   
>   	return cur;
> diff --git a/replace-object.h b/replace-object.h
> new file mode 100644
> index 0000000000..50731ec9c2
> --- /dev/null
> +++ b/replace-object.h
> @@ -0,0 +1,9 @@
> +#ifndef REPLACE_OBJECT_H
> +#define REPLACE_OBJECT_H
> +
> +struct replace_object {
> +	unsigned char original[GIT_MAX_RAWSZ];
> +	unsigned char replacement[GIT_MAX_RAWSZ];
> +};
> +
> +#endif /* REPLACE_OBJECT_H */


  reply	other threads:[~2018-04-09 13:51 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9cf5ca7b-4837-8626-f4f6-f580fd33128b@gmail.com \
    --to=stolee@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=jonathantanmy@google.com \
    --cc=jrnieder@gmail.com \
    --cc=sbeller@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.