git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 0/8] object_id part 4

From
brian m. carlson <sandals@crustytoothpaste.net>
Date
Jun 18, 2016, 22:13 UTC
Message-ID
<20160618221407.1046188-1-sandals@crustytoothpaste.net>

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 both pu and next.

I moved the Coccinelle transforms to contrib/examples/coccinelle, but if it's decided that the Coccinelle transforms simply don't belong in the repository, it's fine to simply drop the first patch (and maybe fix up the commit messages). I can create a GitHub Gist and let reviewers refer to that at their convenience.

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 Peff caught originally.
brian m. carlson (8):
  Add basic Coccinelle transforms.
  Apply object_id Coccinelle transformations.
  Convert struct diff_filespec to struct object_id
  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
 bisect.c                                    |   2 +-
 builtin/blame.c                             |   6 +-
 builtin/fast-export.c                       |  10 +-
 builtin/merge-recursive.c                   |  20 +-
 builtin/merge.c                             |  13 +-
 builtin/reset.c                             |   4 +-
 combine-diff.c                              |  14 +-
 contrib/examples/coccinelle/README          |   2 +
 contrib/examples/coccinelle/object_id.cocci |  83 ++++++++
 diff.c                                      |  95 +++++----
 diffcore-break.c                            |   4 +-
 diffcore-rename.c                           |  16 +-
 diffcore.h                                  |   4 +-
 line-log.c                                  |  12 +-
 merge-recursive.c                           | 310 ++++++++++++++--------------
 merge-recursive.h                           |   6 +-
 notes-merge.c                               |  42 ++--
 refs/files-backend.c                        |   4 +-
 submodule.c                                 |   4 +-
 wt-status.c                                 |   3 +-
 20 files changed, 378 insertions(+), 276 deletions(-)
 create mode 100644 contrib/examples/coccinelle/README
 create mode 100644 contrib/examples/coccinelle/object_id.cocci
Next: brian m. carlson
Message 1 of 20 in “object_id part 4”
  1. 0/8 object_id part 4brian m. carlson, Jun 18, 2016
  2. 6/8 merge-recursive: convert struct merge_file_info to object_idbrian m. carlson, Jun 18, 2016
  3. 4/8 Rename struct diff_filespec's sha1_valid member.brian m. carlson, Jun 18, 2016
  4. 2/8 Apply object_id Coccinelle transformations.brian m. carlson, Jun 18, 2016
  5. Junio C HamanoJun 21, 2016
  6. 8/8 merge-recursive: convert merge_recursive_generic to object_idbrian m. carlson, Jun 18, 2016
  7. 7/8 merge-recursive: convert leaf functions to use struct object_idbrian m. carlson, Jun 18, 2016
  8. 5/8 merge-recursive: convert struct stage_data to use object_idbrian m. carlson, Jun 18, 2016
  9. 3/8 Convert struct diff_filespec to struct object_idbrian m. carlson, Jun 18, 2016
  10. Junio C HamanoJun 21, 2016
  11. brian m. carlsonJun 24, 2016
  12. 1/8 Add basic Coccinelle transforms.brian m. carlson, Jun 18, 2016
  13. Johannes SixtJun 19, 2016
  14. Jeff KingJun 19, 2016
  15. brian m. carlsonJun 19, 2016
  16. Johannes SchindelinJun 20, 2016
  17. Jeff KingJun 20, 2016
  18. Junio C HamanoJun 20, 2016
  19. Junio C HamanoJun 21, 2016
  20. brian m. carlsonJun 22, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.