)]}'
{
  "commit": "324eccb5f6ce2a1a0061ec9f3c40778a029a2d97",
  "tree": "798d6a218a068fcdbe2f7f49c2ed9a9770b5a45a",
  "parents": [
    "3b1ad31a1fe89fe0bd78e1fffdf22d47d43faaf5"
  ],
  "author": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Tue Dec 03 09:28:14 2013 -0800"
  },
  "committer": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Tue Dec 03 10:58:24 2013 -0800"
  },
  "message": "Restore the state of the Problem after a call to Evaluate.\n\nCalling Problem::Evaluate mutates the state of the parameter blocks.\nIn particular, depending on the set and order of parameter blocks\npassed to the evaluate call, it will change the internal indexing\nused by the Program object used by ProblemImpl. This needs to be\nundone before Evaluate returns, otherwise the Problem object\nis in an invalid state.\n\nTo help with testing and debugging in the future, a new method\nProgram::IsValid has been added which checks whether the problem\nhas its parameter and residual blocks in the right state.\n\nThanks to Stefan Leutenegger for reporting this.\n\nChange-Id: I209b486a31433f0cbb58b570047649eca6d42b56\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ae87fcb0317b772f5c3e24864316899b4a5e3a3c",
      "old_mode": 33188,
      "old_path": "internal/ceres/problem_impl.cc",
      "new_id": "09eed9e614c9060eae00da338f6be6728a58761b",
      "new_mode": 33188,
      "new_path": "internal/ceres/problem_impl.cc"
    },
    {
      "type": "modify",
      "old_id": "a7f4f0bd92ce83e5e1a5adc0f41f4b44dadd3c0c",
      "old_mode": 33188,
      "old_path": "internal/ceres/problem_test.cc",
      "new_id": "3d0ea8206dd702e30cf115322093b98ae462d32c",
      "new_mode": 33188,
      "new_path": "internal/ceres/problem_test.cc"
    },
    {
      "type": "modify",
      "old_id": "82d76d392337ee94540c4e242a397761495ddcc3",
      "old_mode": 33188,
      "old_path": "internal/ceres/program.cc",
      "new_id": "9e5c51bd696818d98dc2a2a677172c185b403243",
      "new_mode": 33188,
      "new_path": "internal/ceres/program.cc"
    },
    {
      "type": "modify",
      "old_id": "5002b7e752e60583b8dab7af0e6c08c37a9232ec",
      "old_mode": 33188,
      "old_path": "internal/ceres/program.h",
      "new_id": "4288f609cf8b7a7a230a1572f2b53edf818c5044",
      "new_mode": 33188,
      "new_path": "internal/ceres/program.h"
    },
    {
      "type": "modify",
      "old_id": "f0f36add4c0f15af8347c8bbd75f4090c3be637a",
      "old_mode": 33188,
      "old_path": "internal/ceres/solver_impl_test.cc",
      "new_id": "a605de06c3eac388f8c19fd8b28a269f57272d32",
      "new_mode": 33188,
      "new_path": "internal/ceres/solver_impl_test.cc"
    }
  ]
}
