)]}'
{
  "commit": "1745dd615b3897a3ef9896acfdba67eee1739bf4",
  "tree": "6ef6f4a4627e928f5dacdb9517da154f5c4238e4",
  "parents": [
    "bd90384226a7f8629467f72fc410a9e8086a2dff"
  ],
  "author": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Thu Jun 05 21:30:13 2014 -0700"
  },
  "committer": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Mon Aug 18 13:31:31 2014 -0700"
  },
  "message": "Refactor SolverImpl.\n\nReplace SolverImpl with\n\n a. A minimizer specific preprocessor class.\n b. A generic Solve function inside solver.cc\n c. Presummarize and Postsummarize functions to handle\n    updates to the summary object.\n\nThe existing SolverImpl class was a mixture of the above three\nthings and was increasingly complicated code to follow. This change,\nbreaks it into its three separate constituents, with the aims of\nbetter separation of concerns and thus better testability and\nreliability.\n\nThe call to Solver::Solve() now consists of\n\n1. Presummarize - summarize the given state of the problem and solver\n   options.\n2. Preprocess - Setup everything that is needed to call the minimizer.\n   This includes, removing redundant parameter and residual blocks,\n   setting up the reordering for the linear solver, creating the\n   linear solver, evaluator, inner iteration minimizer etc.\n3. Minimize.\n4. Post summarize - summarize the result of the preprocessing and the\n   solve.\n\nChange-Id: I80f35cfc9f2cbf78f1df4aceace27075779d8a3a\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a52ab30e003a1b0709147bfa58004fa180136338",
      "old_mode": 33188,
      "old_path": "docs/source/version_history.rst",
      "new_id": "8853fb747f754c1bc4ee2fe1bfca80bdc3eb0da6",
      "new_mode": 33188,
      "new_path": "docs/source/version_history.rst"
    },
    {
      "type": "modify",
      "old_id": "fdc5457149922071daa964959f47c7f89a580085",
      "old_mode": 33188,
      "old_path": "include/ceres/solver.h",
      "new_id": "ef391a76dd99a6e2f7f070853187ba1fbb88210e",
      "new_mode": 33188,
      "new_path": "include/ceres/solver.h"
    },
    {
      "type": "modify",
      "old_id": "227f09195382135a4decffdcce42a272fcd809cd",
      "old_mode": 33188,
      "old_path": "internal/ceres/CMakeLists.txt",
      "new_id": "85b49060f15652349300825e02c90f540a31a4ca",
      "new_mode": 33188,
      "new_path": "internal/ceres/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "7a875b369955f1d169fbbe828788ac05070a5612",
      "old_mode": 33188,
      "old_path": "internal/ceres/preprocessor.h",
      "new_id": "b4ca5b1174735a6bf9bae6ac7395d44ddd62c06c",
      "new_mode": 33188,
      "new_path": "internal/ceres/preprocessor.h"
    },
    {
      "type": "modify",
      "old_id": "3a57084d71a2f0e9d13431e4608dc39c34bf0f79",
      "old_mode": 33188,
      "old_path": "internal/ceres/solver.cc",
      "new_id": "d49abefa1468bf2107a0d3cc29cfd8cf55eb12b0",
      "new_mode": 33188,
      "new_path": "internal/ceres/solver.cc"
    },
    {
      "type": "delete",
      "old_id": "67bccdac50ba5f37c713fd376e59e7f74ca963bb",
      "old_mode": 33188,
      "old_path": "internal/ceres/solver_impl.cc",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "5cefdb1e69f8ca9be63ce2f33b606406698ff218",
      "old_mode": 33188,
      "old_path": "internal/ceres/solver_impl.h",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "2d517c69647db9f349f6a64fb3c37066e432c8d0",
      "old_mode": 33188,
      "old_path": "internal/ceres/solver_impl_test.cc",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "2a136f7e09b9753df56828a92a6e21abe5474574",
      "old_mode": 33188,
      "old_path": "internal/ceres/solver_test.cc",
      "new_id": "f2ead063bc98ab18d642533d5ff252b47f51dd83",
      "new_mode": 33188,
      "new_path": "internal/ceres/solver_test.cc"
    },
    {
      "type": "delete",
      "old_id": "243030cfdb6d20ef670804c98c840891d4fc734f",
      "old_mode": 33188,
      "old_path": "internal/ceres/summary_utils.cc",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "9b07987afaa8854eb736786975b6268aa400dabf",
      "old_mode": 33188,
      "old_path": "internal/ceres/summary_utils.h",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "70680f5789fded5d80a9b68cc81d77128950ce7a",
      "old_mode": 33188,
      "old_path": "jni/Android.mk",
      "new_id": "496956c87cf71d6af713acd7c03f52205a13a1bd",
      "new_mode": 33188,
      "new_path": "jni/Android.mk"
    }
  ]
}
