From: "brian m. carlson" <sandals@crustytoothpaste.net>
To: git@vger.kernel.org
Cc: Elijah Newren <newren@gmail.com>,
Junio C Hamano <gitster@pobox.com>,
Stefan Beller <sbeller@google.com>, Jeff King <peff@peff.net>,
Johannes Sixt <j6t@kdbg.org>
Subject: [PATCH v3 00/11] struct object_id, Part 4
Date: Fri, 24 Jun 2016 23:09:18 +0000 [thread overview]
Message-ID: <20160624230929.82222-1-sandals@crustytoothpaste.net> (raw)
This series is part 4 in a series of conversions to replace instances of
unsigned char [20] with struct object_id. Most of this series touches
the merge-recursive code.
New in this series is the use of Coccinelle (http://coccinelle.lip6.fr/)
semantic patches. These semantic patches can make automatic
transformations to C source code for cleanup or refactoring reasons.
This series introduces a set of transforms for the struct object_id
transition, cleans up some existing code with them, and applies a small
number of semantic patches to transform parts of the merge-recursive
code. Some manual refactoring work follows.
Note that in the patches created with the semantic patches, the only
manual change was the definition of the struct member. Opinions on
whether this is a viable technique for further work to ease both the
creation and review of patches are of course welcomed.
The testsuite continues to pass at each step, and this series rebases
cleanly on next.
I picked up Junio's change from sha_eq to oid_eq, but didn't convert the
calls to oidcmp. I think the current version (with oid_eq) is actually
more readable than using oidcmp, if slightly less efficient.
Changes from v2:
* Pick up improvements from Junio's version on pu.
* Add oid_to_hex_r.
* Add oid_to_hex_r to object_id.cocci.
* Convert prep_temp_blob as suggested by Junio.
* Converted hashcpy(.*, null_sha1) to hashclr.
Changes from v1:
* Move the object ID transformations to contrib/examples/coccinelle.
* Add a README to that folder explaining what they are.
* Adjust the Coccinelle patches to transform plain structs before
pointers to structs to avoid misconversions. This addresses the issue
that Johannes Sixt caught originally.
brian m. carlson (11):
hex: add oid_to_hex_r.
contrib/coccinelle: add basic Coccinelle transforms
Convert hashcpy with null_sha1 to hashclr.
coccinelle: apply object_id Coccinelle transformations
diff: convert struct diff_filespec to struct object_id
diff: rename struct diff_filespec's sha1_valid member
merge-recursive: convert struct stage_data to use object_id
merge-recursive: convert struct merge_file_info to object_id
merge-recursive: convert leaf functions to use struct object_id
merge-recursive: convert merge_recursive_generic to object_id
diff: convert prep_temp_blob to struct object_id.
bisect.c | 2 +-
builtin/blame.c | 6 +-
builtin/fast-export.c | 10 +-
builtin/merge-recursive.c | 20 +--
builtin/merge.c | 15 +-
builtin/reset.c | 4 +-
builtin/unpack-objects.c | 4 +-
cache.h | 1 +
combine-diff.c | 14 +-
contrib/coccinelle/README | 2 +
contrib/coccinelle/object_id.cocci | 95 ++++++++++++
diff.c | 99 ++++++------
diffcore-break.c | 4 +-
diffcore-rename.c | 16 +-
diffcore.h | 4 +-
hex.c | 5 +
line-log.c | 12 +-
merge-recursive.c | 310 +++++++++++++++++++------------------
merge-recursive.h | 6 +-
notes-merge.c | 42 ++---
refs/files-backend.c | 4 +-
submodule-config.c | 2 +-
submodule.c | 4 +-
t/helper/test-submodule-config.c | 2 +-
wt-status.c | 3 +-
25 files changed, 403 insertions(+), 283 deletions(-)
create mode 100644 contrib/coccinelle/README
create mode 100644 contrib/coccinelle/object_id.cocci
next reply other threads:[~2016-06-24 23:10 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-24 23:09 brian m. carlson [this message]
2016-06-24 23:09 ` [PATCH v3 01/11] hex: add oid_to_hex_r brian m. carlson
2016-06-24 23:09 ` [PATCH v3 02/11] contrib/coccinelle: add basic Coccinelle transforms brian m. carlson
2016-06-24 23:09 ` [PATCH v3 03/11] Convert hashcpy with null_sha1 to hashclr brian m. carlson
2016-06-24 23:09 ` [PATCH v3 04/11] coccinelle: apply object_id Coccinelle transformations brian m. carlson
2016-06-24 23:09 ` [PATCH v3 05/11] diff: convert struct diff_filespec to struct object_id brian m. carlson
2016-06-24 23:09 ` [PATCH v3 06/11] diff: rename struct diff_filespec's sha1_valid member brian m. carlson
2016-06-25 0:29 ` Junio C Hamano
2016-06-25 0:52 ` brian m. carlson
2016-06-24 23:09 ` [PATCH v3 07/11] merge-recursive: convert struct stage_data to use object_id brian m. carlson
2016-06-24 23:09 ` [PATCH v3 08/11] merge-recursive: convert struct merge_file_info to object_id brian m. carlson
2016-06-24 23:09 ` [PATCH v3 09/11] merge-recursive: convert leaf functions to use struct object_id brian m. carlson
2016-06-24 23:09 ` [PATCH v3 10/11] merge-recursive: convert merge_recursive_generic to object_id brian m. carlson
2016-06-24 23:09 ` [PATCH v3 11/11] diff: convert prep_temp_blob to struct object_id brian m. carlson
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=20160624230929.82222-1-sandals@crustytoothpaste.net \
--to=sandals@crustytoothpaste.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=j6t@kdbg.org \
--cc=newren@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.
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).