)]}'
{
  "commit": "ca8c32cd7ae7c3ae27bb6b649eafbfd54d77f916",
  "tree": "20d74c26df2112515313b0b22c7358427bad8b57",
  "parents": [
    "f0a9a1a30e60e92cec9bff4cae030478c276da4d"
  ],
  "author": {
    "name": "Shawn O. Pearce",
    "email": "sop@google.com",
    "time": "Tue May 11 18:21:33 2010 -0700"
  },
  "committer": {
    "name": "Shawn O. Pearce",
    "email": "sop@google.com",
    "time": "Tue May 11 18:31:47 2010 -0700"
  },
  "message": "sync: kill git fetch process before SSH control master process\n\nIf the SSH control master process is killed while an active git\nfetch is using its network socket, the underlying SSH client may\nnot realize the connection was broken.  This can lead to both the\nclient and the server waiting indefinitely for network messages\nwhich will never be sent.\n\nWork around the problem by keeping track of any processes that use\nthe tunnels we establish.  If we are about to kill any of the SSH\ncontrol masters that we started, ensure the clients using them are\nsuccessfully killed first.\n\nChange-Id: Ida6c124dcb0c6a26bf7dd69cba2fbdc2ecd5b2fc\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3309f378ca951e391c279b3b7f261d0f00321ce0",
      "old_mode": 33188,
      "old_path": "git_command.py",
      "new_id": "4ad908f6a416f923f38bc8d8a598b4873b43947c",
      "new_mode": 33188,
      "new_path": "git_command.py"
    },
    {
      "type": "modify",
      "old_id": "a7c82107d95bd3d6e1944ef9a575c0c577c01b29",
      "old_mode": 33188,
      "old_path": "git_config.py",
      "new_id": "75936d40d13271b9dcf918f629328e17f4dcd924",
      "new_mode": 33188,
      "new_path": "git_config.py"
    }
  ]
}
