git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Ben Peart <peartben@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: Lars Schneider <larsxschneider@gmail.com>,
	Git Mailing List <git@vger.kernel.org>,
	benpeart@microsoft.com, christian.couder@gmail.com
Subject: Re: [PATCH v5 4/8] convert: Separate generic structures and variables from the filter specific ones
Date: Thu, 20 Apr 2017 13:24:45 -0400	[thread overview]
Message-ID: <afcdc386-0122-a33e-fa90-4ddbba32ab66@gmail.com> (raw)
In-Reply-To: <xmqqa87ddwbe.fsf@gitster.mtv.corp.google.com>

On 4/18/2017 9:23 PM, Junio C Hamano wrote:
> Ben Peart <peartben@gmail.com> writes:
>
>> On 4/16/2017 11:31 PM, Junio C Hamano wrote:
>>> Lars Schneider <larsxschneider@gmail.com> writes:
>>>
>>>> However, I think it eases code maintainability in the long run if a function is "as pure as
>>>> possible" (IOW does rely on global state as less as possible).
>>> If the original relied on a global hashmap and this update kept the
>>> code like so, I wouldn't mind the end result of this series
>>> (i.e. rely on it being global).  But that is not the case.  It is
>>> making the code worse by stopping passing the hashmap through the
>>> callchain.
>> ...  Since it was already a global, I didn't feel
>> like this made it any worse.
> The code before your series can easily lose the globals with the
> attached patch, _exactly_ because it is prepared to be reusable by a
> new caller that supplies its own hashmap by passing it through the
> callchain.  The child-process machinery Lars made for his conversion
> thing, which you are trying to split out to make it reusable, can be
> used by somebody other than apply_multi_file_filter() if you do not
> lose the hashmap; what the new caller needs to do is to supply its
> own hashmap so that they do not interact with the set of processes
> used by Lars's conversion machinery.
>
> If we want to lose the global _after_ applying this patch 4/8, don't
> we have to essentially _undo_ 4/8?  How can it not be seen as making
> it worse?

That's fine.  I'll flip it back in the next spin and enable multiple 
pools of sub-processes.  We'll still need 4/8 but it will be a smaller 
change.

>
>   convert.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/convert.c b/convert.c
> index 8d652bf27c..ff831e85b8 100644
> --- a/convert.c
> +++ b/convert.c
> @@ -503,9 +503,6 @@ struct cmd2process {
>   	struct child_process process;
>   };
>   
> -static int cmd_process_map_initialized;
> -static struct hashmap cmd_process_map;
> -
>   static int cmd2process_cmp(const struct cmd2process *e1,
>   			   const struct cmd2process *e2,
>   			   const void *unused)
> @@ -682,6 +679,9 @@ static int apply_multi_file_filter(const char *path, const char *src, size_t len
>   	struct strbuf filter_status = STRBUF_INIT;
>   	const char *filter_type;
>   
> +static int cmd_process_map_initialized;
> +static struct hashmap cmd_process_map;
> +
>   	if (!cmd_process_map_initialized) {
>   		cmd_process_map_initialized = 1;
>   		hashmap_init(&cmd_process_map, (hashmap_cmp_fn) cmd2process_cmp, 0);
>


  reply	other threads:[~2017-04-20 17:24 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-07 12:03 [PATCH v5 0/8] refactor the filter process code into a reusable module Ben Peart
2017-04-07 12:03 ` [PATCH v5 1/8] pkt-line: add packet_read_line_gently() Ben Peart
2017-04-09 19:34   ` Lars Schneider
2017-04-07 12:03 ` [PATCH v5 2/8] convert: move packet_write_list() into pkt-line as packet_writel() Ben Peart
2017-04-09 19:43   ` Lars Schneider
2017-04-07 12:03 ` [PATCH v5 3/8] convert: Split start_multi_file_filter into two separate functions Ben Peart
2017-04-09 19:56   ` Lars Schneider
2017-04-11 16:16   ` Jeff King
2017-04-11 19:29     ` Lars Schneider
2017-04-11 19:37       ` Jeff King
2017-04-11 20:01         ` Lars Schneider
2017-04-11 20:05           ` Jeff King
2017-04-20 17:27             ` Ben Peart
2017-04-07 12:03 ` [PATCH v5 4/8] convert: Separate generic structures and variables from the filter specific ones Ben Peart
2017-04-10 10:18   ` Lars Schneider
2017-04-17  3:31     ` Junio C Hamano
2017-04-18 16:38       ` Ben Peart
2017-04-19  1:23         ` Junio C Hamano
2017-04-20 17:24           ` Ben Peart [this message]
2017-04-07 12:03 ` [PATCH v5 5/8] convert: Update generic functions to only use generic data structures Ben Peart
2017-04-10 12:05   ` Lars Schneider
2017-04-07 12:03 ` [PATCH v5 6/8] convert: rename reusable sub-process functions Ben Peart
2017-04-10 12:11   ` Lars Schneider
2017-04-07 12:03 ` [PATCH v5 7/8] sub-process: move sub-process functions into separate files Ben Peart
2017-04-10 12:41   ` Lars Schneider
2017-04-07 12:03 ` [PATCH v5 8/8] convert: Update subprocess_read_status to not die on EOF Ben Peart
2017-04-10 12:48   ` Lars Schneider

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

  List information: http://vger.kernel.org/majordomo-info.html

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

  git send-email \
    --in-reply-to=afcdc386-0122-a33e-fa90-4ddbba32ab66@gmail.com \
    --to=peartben@gmail.com \
    --cc=benpeart@microsoft.com \
    --cc=christian.couder@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=larsxschneider@gmail.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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).