From: Christian Couder <christian.couder@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>, "Jeff King" <peff@peff.net>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
"Karsten Blees" <karsten.blees@gmail.com>,
"Nguyen Thai Ngoc Duy" <pclouds@gmail.com>,
"Johannes Schindelin" <Johannes.Schindelin@gmx.de>,
"Stefan Beller" <sbeller@google.com>,
"Matthieu Moy" <Matthieu.Moy@grenoble-inp.fr>,
"Christian Couder" <chriscool@tuxfamily.org>
Subject: [RFC/PATCH 00/48] Libifying git apply
Date: Wed, 9 Mar 2016 18:48:28 +0100 [thread overview]
Message-ID: <1457545756-20616-1-git-send-email-chriscool@tuxfamily.org> (raw)
This is a patch series about libifying "git apply" functionality, to
be able to use this functionality in "git am" without spawning new
processes. This should make "git am" and "git rebase" significantly
faster.
This has been discussed in the following thread:
http://thread.gmane.org/gmane.comp.version-control.git/287236/
This RFC patch series for now just gets rid of the global variables
and refactors the code around a bit.
As suggested by Junio the global variables in builtin/apply.c are just
thrown into a single "apply_state" structure that is passed around the
callchain. A new parameter called "state" that is a pointer to the
"apply_state" structure comes at the beginning of the helper functions
that need it.
Before I make further changes to handle erroneous input and make the
libified functions not die() and properly clean things up, I'd be
happy to get some feedback.
One point I'd especially welcome feedback about is the fact that there
are many boolean options that are using OPT_BOOL(...), so they use an
int. And there are a few others that are using OPT_BIT(...), so they
use just a bit. I wonder if it is worth it to try to be consistent,
and maybe also to try to save some memory.
Related to this, some of the variables for these options have not been
moved into the "apply_state" structure, because they are not global to
the file, but maybe for consistency they should be.
Christian Couder (48):
builtin/apply: avoid parameter shadowing 'p_value' global
builtin/apply: avoid parameter shadowing 'linenr' global
builtin/apply: avoid local variable shadowing 'len' parameter
builtin/apply: extract line_by_line_fuzzy_match() from
match_fragment()
builtin/apply: move 'options' variable into cmd_apply()
builtin/apply: introduce 'struct apply_state' to start libifying
builtin/apply: move 'newfd' global into 'struct apply_state'
builtin/apply: move 'unidiff_zero' global into 'struct apply_state'
builtin/apply: move 'check' global into 'struct apply_state'
builtin/apply: move 'check_index' global into 'struct apply_state'
builtin/apply: move 'apply_in_reverse' global into 'struct
apply_state'
builtin/apply: move 'apply_with_reject' global into 'struct
apply_state'
builtin/apply: move 'apply_verbosely' global into 'struct apply_state'
builtin/apply: move 'update_index' global into 'struct apply_state'
builtin/apply: move 'allow_overlap' global into 'struct apply_state'
builtin/apply: move 'cached' global into 'struct apply_state'
builtin/apply: move 'diffstat' global into 'struct apply_state'
builtin/apply: move 'numstat' global into 'struct apply_state'
builtin/apply: move 'summary' global into 'struct apply_state'
builtin/apply: move 'threeway' global into 'struct apply_state'
builtin/apply: move 'no-add' global into 'struct apply_state'
builtin/apply: move 'unsafe_paths' global into 'struct apply_state'
builtin/apply: move 'line_termination' global into 'struct
apply_state'
builtin/apply: move 'fake_ancestor' global into 'struct apply_state'
builtin/apply: move 'p_context' global into 'struct apply_state'
builtin/apply: move 'apply' global into 'struct apply_state'
builtin/apply: move 'read_stdin' global into cmd_apply()
builtin/apply: move 'lock_file' global into 'struct apply_state'
builtin/apply: move 'patch_input_file' global into 'struct
apply_state'
builtin/apply: move 'limit_by_name' global into 'struct apply_state'
builtin/apply: move 'has_include' global into 'struct apply_state'
builtin/apply: move 'p_value' global into 'struct apply_state'
builtin/apply: move 'p_value_known' global into 'struct apply_state'
builtin/apply: move 'root' global into 'struct apply_state'
builtin/apply: move 'whitespace_error' global into 'struct
apply_state'
builtin/apply: move 'whitespace_option' into 'struct apply_state'
builtin/apply: remove whitespace_option arg from
set_default_whitespace_mode()
builtin/apply: move 'squelch_whitespace_errors' into 'struct
apply_state'
builtin/apply: move 'applied_after_fixing_ws' into 'struct
apply_state'
builtin/apply: move 'ws_error_action' into 'struct apply_state'
builtin/apply: move 'ws_ignore_action' into 'struct apply_state'
builtin/apply: move 'max_change' and 'max_len' into 'struct
apply_state'
builtin/apply: move 'linenr' global into 'struct apply_state'
builtin/apply: move 'fn_table' global into 'struct apply_state'
builtin/apply: move 'symlink_changes' global into 'struct apply_state'
builtin/apply: move 'state' init into init_apply_state()
builtin/apply: move 'state' check into check_apply_state()
builtin/apply: move applying patches into apply_all_patches()
builtin/apply.c | 1424 +++++++++++++++++++++++++++++++------------------------
1 file changed, 817 insertions(+), 607 deletions(-)
--
2.8.0.rc1.49.gca61272
next reply other threads:[~2016-03-09 17:51 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-09 17:48 Christian Couder [this message]
2016-03-09 17:48 ` [RFC/PATCH 01/48] builtin/apply: avoid parameter shadowing 'p_value' global Christian Couder
2016-03-09 23:27 ` Junio C Hamano
2016-03-10 0:54 ` Duy Nguyen
2016-03-10 10:45 ` Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 02/48] builtin/apply: avoid parameter shadowing 'linenr' global Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 03/48] builtin/apply: avoid local variable shadowing 'len' parameter Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 04/48] builtin/apply: extract line_by_line_fuzzy_match() from match_fragment() Christian Couder
2016-03-09 22:55 ` Stefan Beller
2016-03-10 8:36 ` Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 05/48] builtin/apply: move 'options' variable into cmd_apply() Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 06/48] builtin/apply: introduce 'struct apply_state' to start libifying Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 07/48] builtin/apply: move 'newfd' global into 'struct apply_state' Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 08/48] builtin/apply: move 'unidiff_zero' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 09/48] builtin/apply: move 'check' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 10/48] builtin/apply: move 'check_index' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 11/48] builtin/apply: move 'apply_in_reverse' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 12/48] builtin/apply: move 'apply_with_reject' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 13/48] builtin/apply: move 'apply_verbosely' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 14/48] builtin/apply: move 'update_index' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 15/48] builtin/apply: move 'allow_overlap' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 16/48] builtin/apply: move 'cached' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 17/48] builtin/apply: move 'diffstat' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 18/48] builtin/apply: move 'numstat' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 19/48] builtin/apply: move 'summary' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 20/48] builtin/apply: move 'threeway' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 21/48] builtin/apply: move 'no-add' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 22/48] builtin/apply: move 'unsafe_paths' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 23/48] builtin/apply: move 'line_termination' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 24/48] builtin/apply: move 'fake_ancestor' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 25/48] builtin/apply: move 'p_context' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 26/48] builtin/apply: move 'apply' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 27/48] builtin/apply: move 'read_stdin' global into cmd_apply() Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 28/48] builtin/apply: move 'lock_file' global into 'struct apply_state' Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 29/48] builtin/apply: move 'patch_input_file' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 30/48] builtin/apply: move 'limit_by_name' " Christian Couder
2016-03-09 17:48 ` [RFC/PATCH 31/48] builtin/apply: move 'has_include' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 32/48] builtin/apply: move 'p_value' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 33/48] builtin/apply: move 'p_value_known' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 34/48] builtin/apply: move 'root' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 35/48] builtin/apply: move 'whitespace_error' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 36/48] builtin/apply: move 'whitespace_option' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 37/48] builtin/apply: remove whitespace_option arg from set_default_whitespace_mode() Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 38/48] builtin/apply: move 'squelch_whitespace_errors' into 'struct apply_state' Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 39/48] builtin/apply: move 'applied_after_fixing_ws' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 40/48] builtin/apply: move 'ws_error_action' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 41/48] builtin/apply: move 'ws_ignore_action' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 42/48] builtin/apply: move 'max_change' and 'max_len' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 43/48] builtin/apply: move 'linenr' global " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 44/48] builtin/apply: move 'fn_table' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 45/48] builtin/apply: move 'symlink_changes' " Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 46/48] builtin/apply: move 'state' init into init_apply_state() Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 47/48] builtin/apply: move 'state' check into check_apply_state() Christian Couder
2016-03-09 17:49 ` [RFC/PATCH 48/48] builtin/apply: move applying patches into apply_all_patches() Christian Couder
2016-03-09 18:14 ` [RFC/PATCH 00/48] Libifying git apply Junio C Hamano
2016-03-11 15:57 ` Christian Couder
2016-03-10 9:26 ` Duy Nguyen
2016-03-11 17:34 ` Christian Couder
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=1457545756-20616-1-git-send-email-chriscool@tuxfamily.org \
--to=christian.couder@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=Matthieu.Moy@grenoble-inp.fr \
--cc=avarab@gmail.com \
--cc=chriscool@tuxfamily.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=karsten.blees@gmail.com \
--cc=pclouds@gmail.com \
--cc=peff@peff.net \
--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 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 NNTP newsgroup(s).