On Sun, Jun 5, 2016 at 1:55 PM, brian m. carlson <sandals@xxxxxxxxxxxxxxxxxxxx> wrote: > 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) So is this all we have to review then? > > 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. I would be interested in reviewing such a patch. Thanks, Stefan > > [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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html