One thing that I've noticed with the struct object_id conversion is that most of the work is mechanical transformations of a data member from one type into another. Doing this by hand is both boring and error-prone, and it requires a tiresome review of nearly-identical changes.
I've noticed that Coccinelle[0], a tool for automated refactors, has been used with great success on LKML, because it understands C well and can perform the transformations precisely and rapidly. It also does nice things like indenting the code it modifies if necessary.
An example semantic patch looks like this:
@@ expression E1; @@ - is_null_sha1(E1.hash) + is_null_oid(&E1)
@@ expression E1; @@ - is_null_sha1(E1->hash) + is_null_oid(E1)
This does what you think it does: transforms calls to is_null_sha1 that use the struct object_id hash member into calls to is_null_oid.
I'd like to use this for some of the struct object_id work if others think this is a good idea. I feel it's likely to reduce the reviewing overhead and allow people to better reason about the quality and behavior of the sent patches. Of course, I would still review the patches manually for errors and improvements, and would still accept responsibility for the content of the patches.
If there's interest, I can send a patch with a set of basic object_id transforms to make it easier for others to make those changes when they're doing work elsewhere in the codebase.
[0] http://coccinelle.lip6.fr/
-- brian m. carlson / brian with sandals: Houston, Texas, US +1 832 623 2791 | https://www.crustytoothpaste.net/~bmc | My opinion only OpenPGP: https://keybase.io/bk2204