)]}'
{
  "commit": "577cdf0cf5afa5f350fbaddf77bbacdb9f76d2f8",
  "tree": "3a7b6d4f2f7aa0a64e6da8d23ccf990fc2eb7f03",
  "parents": [
    "3d447ec0e30043a2acd52704f5ed1da07a6f2d6e"
  ],
  "author": {
    "name": "Márton Németh",
    "email": "nm127@freemail.hu",
    "time": "Sun Jan 10 13:39:39 2010 +0100"
  },
  "committer": {
    "name": "Jens Axboe",
    "email": "jens.axboe@oracle.com",
    "time": "Mon Jan 11 14:31:26 2010 +0100"
  },
  "message": "block: make USB device id constant\n\nThe id_table field of the struct usb_device_id is constant in \u003clinux/usb.h\u003e\nso it is worth to make ub_usb_ids also constant.\n\nThe semantic match that finds this kind of pattern is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@r@\ndisable decl_init,const_decl_init;\nidentifier I1, I2, x;\n@@\n\tstruct I1 {\n\t  ...\n\t  const struct I2 *x;\n\t  ...\n\t};\n@s@\nidentifier r.I1, y;\nidentifier r.x, E;\n@@\n\tstruct I1 y \u003d {\n\t  .x \u003d E,\n\t};\n@c@\nidentifier r.I2;\nidentifier s.E;\n@@\n\tconst struct I2 E[] \u003d ... ;\n@depends on !c@\nidentifier r.I2;\nidentifier s.E;\n@@\n+\tconst\n\tstruct I2 E[] \u003d ...;\n// \u003c/smpl\u003e\n\nSigned-off-by: Márton Németh \u003cnm127@freemail.hu\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: cocci@diku.dk\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c739b203fe91321b955905b72c3eab3e93f8d821",
      "old_mode": 33188,
      "old_path": "drivers/block/ub.c",
      "new_id": "d86d1357ccefea9fa127ae55ee7d4d8b12564888",
      "new_mode": 33188,
      "new_path": "drivers/block/ub.c"
    }
  ]
}
