)]}'
{
  "commit": "350cde4c4bec5e7b5776cf52d61da600af3efc31",
  "tree": "45c09f4113cf5d7c0d5430360344c5d97d93304e",
  "parents": [
    "48244781c2cad1565b4b32b4524ff9931a39f848"
  ],
  "author": {
    "name": "Shawn O. Pearce",
    "email": "sop@google.com",
    "time": "Thu Apr 16 11:21:18 2009 -0700"
  },
  "committer": {
    "name": "Shawn O. Pearce",
    "email": "sop@google.com",
    "time": "Thu Apr 16 11:21:18 2009 -0700"
  },
  "message": "Change repo sync to be more friendly when updating the tree\n\nWe now try to sync all projects that can be done safely first, before\nwe start rebasing user commits over the upstream.  This has the nice\neffect of making the local tree as close to the upstream as possible\nbefore the user has to start resolving merge conflicts, as that extra\ninformation in other projects may aid in the conflict resolution.\n\nInformational output is buffered and delayed until calculation for\nall projects has been done, so that the user gets one concise list\nof notice messages, rather than it interrupting the progress meter.\n\nFast-forward output is now prefixed with the project header, so the\nuser can see which project that update is taking place in, and make\nsome relation of the diffstat back to the project name.\n\nRebase output is now prefixed with the project header, so that if\nthe rebase fails, the user can see which project we were operating\non and can try to address the failure themselves.\n\nSince rebase sits on a detached HEAD, we now look for an in-progress\nrebase during sync, so we can alert the user that the given project\nis in a state we cannot handle.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "07d1f6fd134e468b075eeecef1d25dddd98ad948",
      "old_mode": 33188,
      "old_path": "color.py",
      "new_id": "7fa21d23cd633b2a7aef30211527a8c96d8c5d9a",
      "new_mode": 33188,
      "new_path": "color.py"
    },
    {
      "type": "modify",
      "old_id": "33cb3444047bfa1f24413b15ab31ef532b9c0ad5",
      "old_mode": 33188,
      "old_path": "project.py",
      "new_id": "6621f1cb9d7621c52101a19121f5f2c82852b218",
      "new_mode": 33188,
      "new_path": "project.py"
    },
    {
      "type": "modify",
      "old_id": "a32eaae011e63bb85631438174d55350172c17fa",
      "old_mode": 33188,
      "old_path": "subcmds/init.py",
      "new_id": "103a78d6437ba925b0c9901985cf1627e6ed5994",
      "new_mode": 33188,
      "new_path": "subcmds/init.py"
    },
    {
      "type": "modify",
      "old_id": "f6eb2a08a8926cda790248ddf78535bb119cc23f",
      "old_mode": 33188,
      "old_path": "subcmds/sync.py",
      "new_id": "ec5ada21446ead3e3b238604c0933370ab7332d2",
      "new_mode": 33188,
      "new_path": "subcmds/sync.py"
    }
  ]
}
