)]}'
{
  "commit": "38e4387f8eb8cffd6359d726c38a7c524fef07e3",
  "tree": "897b7f640822d21019d740fd45aa564fba6a18f9",
  "parents": [
    "ee6908442102008df57b46271323d9b06d5fdfbf"
  ],
  "author": {
    "name": "Jimmie Wester",
    "email": "jimmie.wester@stericsson.com",
    "time": "Wed Oct 24 14:35:05 2012 +0200"
  },
  "committer": {
    "name": "David Pursehouse",
    "email": "david.pursehouse@sonymobile.com",
    "time": "Tue Feb 03 16:01:15 2015 +0900"
  },
  "message": "Implementation of manifest defined githooks\n\nWhen working within a team or corporation it is often\nuseful/required to use predefined git templates. This\nchange teaches repo to use a per-remote git hook template\nstructure.\n\nThe implementation is done as a continuation of the\nexisting projecthook functionality. The terminology is\ntherefore defined as projecthooks.\n\nThe downloaded projecthooks are stored in the .repo\ndirectory as a metaproject separating them from the users\nproject forest.\n\nThe projecthooks are downloaded and set up when doing a\nrepo init and updated for each new repo init.\n\nWhen downloading a mirror the projecthooks gits are\nnot added to the bare forest since the intention is to\nensure that the latest are used (allows for company policy\nenforcement).\n\nThe projecthooks are defined in the manifest file in the\nremote element as a subnode, the name refers to the\nproject name on the server referred to in the remote.\n\u003cremote name\u003d\"myremote ..\u003e\n   \u003cprojecthook name\u003d\"myprojecthookgit\" revision\u003d\"myrevision\"/\u003e\n\u003c/remote\u003e\n\nThe hooks found in the projecthook revision supersede\nthe stock hooks found in repo. This removes the need for\nupdating the projecthook gits for repo stock hook changes.\n\nChange-Id: I6796b7b0342c1f83c35f4b3e46782581b069a561\nSigned-off-by: Patrik Ryd \u003cpatrik.ryd@stericsson.com\u003e\nSigned-off-by: Ian Kumlien \u003cian.kumlien@gmail.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1aa93965b9d51c668952604218877baaae387ad9",
      "old_mode": 33188,
      "old_path": "docs/manifest-format.txt",
      "new_id": "4b979c79e73580d6e964d3dd746f4c9cefc0472f",
      "new_mode": 33188,
      "new_path": "docs/manifest-format.txt"
    },
    {
      "type": "modify",
      "old_id": "890c954de759216f5833c2170b22a3f1f3d39a12",
      "old_mode": 33188,
      "old_path": "manifest_xml.py",
      "new_id": "9472a08fc88757d99f33a36eba858e7abb115746",
      "new_mode": 33188,
      "new_path": "manifest_xml.py"
    },
    {
      "type": "modify",
      "old_id": "49db02e35f5a1aff052ee3197ae988d9be7ddacd",
      "old_mode": 33188,
      "old_path": "project.py",
      "new_id": "68bc7bd373f6e4d78aaf3710b85906871b730db9",
      "new_mode": 33188,
      "new_path": "project.py"
    },
    {
      "type": "modify",
      "old_id": "b73de71c1a3a77c7c5f29941dc21360705dc6867",
      "old_mode": 33188,
      "old_path": "subcmds/init.py",
      "new_id": "c5bf2823db8fd696aacdc1bd5633ffb34a0882a4",
      "new_mode": 33188,
      "new_path": "subcmds/init.py"
    }
  ]
}
