From: Ben Peart <peartben@gmail.com>
To: Junio C Hamano <gitster@pobox.com>,
Lars Schneider <larsxschneider@gmail.com>
Cc: 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: Tue, 18 Apr 2017 12:38:37 -0400 [thread overview]
Message-ID: <48448c2c-378d-0d87-2f99-32095326f323@gmail.com> (raw)
In-Reply-To: <xmqqmvbfk8va.fsf@gitster.mtv.corp.google.com>
On 4/16/2017 11:31 PM, Junio C Hamano wrote:
> Lars Schneider <larsxschneider@gmail.com> writes:
>
>>> -static struct cmd2process *find_multi_file_filter_entry(struct hashmap *hashmap, const char *cmd)
>>> +static struct subprocess_entry *find_multi_file_filter_entry(const char *cmd)
>> I am curious why you removed the hashmap parameter (here and in other pars of this patch).
>> I know the parameter is not strictly necessary as the hashmap is a global variable anyways.
>> 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.
I debated this myself but there were a couple of things that pushed me
to this simpler model. First, it simplified the interface a little as
you don't need an explicit init call with state to detect if it has
already been initialized and you don't have to pass the hashmap into the
various functions. Since it was already a global, I didn't feel like
this made it any worse.
Second, since the hashmap key is the exact command that was executed if
you ever had two hashmaps with the same key, you'd end up with two
copies of the same background process running. I couldn't come up with
any scenario where you would want two copies of the exact same command
running at the same time so again went with the simpler model.
While I was typing this, I realized that since the background process is
a versioned interface, if there were two different parts of the code
using background processes and if they both wanted to run the same
background process and if they wanted to use different versions of the
interface, then you could want two different copies.
That said, I tend to build for things that are needed now rather than
those that might be needed in the future. If I've missed a scenario,
I'm happy to change the interface.
next prev parent reply other threads:[~2017-04-18 16:38 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 [this message]
2017-04-19 1:23 ` Junio C Hamano
2017-04-20 17:24 ` Ben Peart
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=48448c2c-378d-0d87-2f99-32095326f323@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).