)]}'
{
  "commit": "10d4d997f86cf2a4ce89145df5658952d5722e56",
  "tree": "011d73266eda7d953f4105a16d7cafa574edc91c",
  "parents": [
    "c9e0a798691d8c45747b082206e789c8f50523c9"
  ],
  "author": {
    "name": "Eric Blake",
    "email": "eblake@redhat.com",
    "time": "Mon May 04 09:05:23 2015 -0600"
  },
  "committer": {
    "name": "Markus Armbruster",
    "email": "armbru@redhat.com",
    "time": "Tue May 05 18:39:01 2015 +0200"
  },
  "message": "qapi: Whitelist commands that don\u0027t return dictionary\n\n...or an array of dictionaries.  Although we have to cater to\nexisting commands, returning a non-dictionary means the command\nis not extensible (no new name/value pairs can be added if more\ninformation must be returned in parallel).  By making the\nwhitelist explicit, any new command that falls foul of this\npractice will have to be self-documenting, which will encourage\ndevelopers to either justify the action or rework the design to\nuse a dictionary after all.\n\nIt\u0027s a little bit sloppy that we share a single whitelist among\nthree clients (it\u0027s too permissive for each).  If this is a\nproblem, a future patch could tighten things by having the\ngenerator take the whitelist as an argument (as in\nscripts/qapi-commands.py --legacy-returns\u003d...), or by having\nthe generator output C code that requires explicit use of the\nwhitelist (as in:\n #ifndef FROBNICATE_LEGACY_RETURN_OK\n # error Command \u0027frobnicate\u0027 should return a dictionary\n #endif\nthen having the callers define appropriate macros).  But until\nwe need such fine-grained separation (if ever), this patch does\nthe job just fine.\n\nSigned-off-by: Eric Blake \u003ceblake@redhat.com\u003e\nReviewed-by: Markus Armbruster \u003carmbru@redhat.com\u003e\nSigned-off-by: Markus Armbruster \u003carmbru@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5bc32e311d844d8f5e1af4bba039dbec76ffa937",
      "old_mode": 33188,
      "old_path": "scripts/qapi.py",
      "new_id": "2402d053e4c6ae17159c68b9863a495ebd53ae65",
      "new_mode": 33188,
      "new_path": "scripts/qapi.py"
    },
    {
      "type": "modify",
      "old_id": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
      "old_mode": 33188,
      "old_path": "tests/qapi-schema/returns-alternate.err",
      "new_id": "dfbb419cac287e386e90fef2addec8f57ce35858",
      "new_mode": 33188,
      "new_path": "tests/qapi-schema/returns-alternate.err"
    },
    {
      "type": "modify",
      "old_id": "573541ac9702dd3969c9bc859d2b91ec1f7e6e56",
      "old_mode": 33188,
      "old_path": "tests/qapi-schema/returns-alternate.exit",
      "new_id": "d00491fd7e5bb6fa28c517a0bb32b8b506539d4d",
      "new_mode": 33188,
      "new_path": "tests/qapi-schema/returns-alternate.exit"
    },
    {
      "type": "modify",
      "old_id": "b3b91fd3d4fe80e6b35ce0c50cfcc58ab5d43129",
      "old_mode": 33188,
      "old_path": "tests/qapi-schema/returns-alternate.json",
      "new_id": "972390c06b0825a8fe57cfc7d49a3df13ed4dcc9",
      "new_mode": 33188,
      "new_path": "tests/qapi-schema/returns-alternate.json"
    },
    {
      "type": "modify",
      "old_id": "8a03ed3adf0dfc53843ada385e304e80f71eb81a",
      "old_mode": 33188,
      "old_path": "tests/qapi-schema/returns-alternate.out",
      "new_id": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
      "new_mode": 33188,
      "new_path": "tests/qapi-schema/returns-alternate.out"
    },
    {
      "type": "modify",
      "old_id": "7888fb1b082b7f83104453d9a7aa757ba457eb3d",
      "old_mode": 33188,
      "old_path": "tests/qapi-schema/returns-int.json",
      "new_id": "870ec6366be398646c236be6a35bb7aea72c1d81",
      "new_mode": 33188,
      "new_path": "tests/qapi-schema/returns-int.json"
    },
    {
      "type": "modify",
      "old_id": "36b00a9f3b626a608ce9279d0c0d562366eb1031",
      "old_mode": 33188,
      "old_path": "tests/qapi-schema/returns-int.out",
      "new_id": "70b3ac5e6fe52f12b552dd5e5db0febb04243fa2",
      "new_mode": 33188,
      "new_path": "tests/qapi-schema/returns-int.out"
    },
    {
      "type": "modify",
      "old_id": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
      "old_mode": 33188,
      "old_path": "tests/qapi-schema/returns-whitelist.err",
      "new_id": "a41f019a52e445e5a7087a275eabfe5ce9039c30",
      "new_mode": 33188,
      "new_path": "tests/qapi-schema/returns-whitelist.err"
    },
    {
      "type": "modify",
      "old_id": "573541ac9702dd3969c9bc859d2b91ec1f7e6e56",
      "old_mode": 33188,
      "old_path": "tests/qapi-schema/returns-whitelist.exit",
      "new_id": "d00491fd7e5bb6fa28c517a0bb32b8b506539d4d",
      "new_mode": 33188,
      "new_path": "tests/qapi-schema/returns-whitelist.exit"
    },
    {
      "type": "modify",
      "old_id": "8328563b4e269c1f8dea38a0af6d1b1eeb673007",
      "old_mode": 33188,
      "old_path": "tests/qapi-schema/returns-whitelist.json",
      "new_id": "e8b3cea39613c0f5cea18e72384f22ed17d6fd27",
      "new_mode": 33188,
      "new_path": "tests/qapi-schema/returns-whitelist.json"
    },
    {
      "type": "modify",
      "old_id": "2adcd8ba10763f2cbd1db001c6f428611421ca11",
      "old_mode": 33188,
      "old_path": "tests/qapi-schema/returns-whitelist.out",
      "new_id": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
      "new_mode": 33188,
      "new_path": "tests/qapi-schema/returns-whitelist.out"
    }
  ]
}
