)]}'
{
  "commit": "79bde35f29291cf464b59f3dc2dd9f1fa88776a9",
  "tree": "3c9daf5901e2249e3bae63eb47f65bbab5d1db68",
  "parents": [
    "a674e0f8534ea6948f70a72fe9718e07b3d039ff"
  ],
  "author": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Thu Nov 21 21:33:51 2013 -0800"
  },
  "committer": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Thu Nov 21 22:16:24 2013 -0800"
  },
  "message": "SuiteSparse errors do not cause a fatal crash.\n\n1. Move LinearSolverTerminationType to ceres::internal.\n2. Add FATAL_ERROR as a new enum to LinearSolverTerminationType.\n3. Pipe SuiteSparse errors via a LinearSolverTerminationType so\n   to distinguish between fatal and non-fatal errors.\n4. Update levenberg marquardt and dogleg strategies to deal\n   with FATAL_ERROR.\n5. Update trust_region_minimizer to terminate when FATAL_ERROR\n   is encountered.\n6. Remove SuiteSparse::SolveCholesky as it screws up the error\n   handling.\n7. Fix all clients calling SuiteSparse to handle the result of\n   SuiteSparse::Cholesky correctly.\n8. Remove fatal failures in SuiteSparse when symbolic factorization\n   fails.\n9. Fix all clients of SuiteSparse to deal with null symbolic factors.\n\nThis is a temporary fix to deal with some production problems. A more\nextensive cleanup and testing regime will be put in place in a\nsubsequent CL.\n\nChange-Id: I1f60d539799dd95db7ecc340911e261fa4824f92\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c94bd049bfa2cc358be2e1d05cd5edb12a9e6388",
      "old_mode": 33188,
      "old_path": "include/ceres/types.h",
      "new_id": "617bec0e1b6a238fd6122815f484bb98824ac5fa",
      "new_mode": 33188,
      "new_path": "include/ceres/types.h"
    },
    {
      "type": "modify",
      "old_id": "d39508e64067bcead5b0924ef61c60993439369f",
      "old_mode": 33188,
      "old_path": "internal/ceres/covariance_impl.cc",
      "new_id": "c302181f2e5ec783787b0689eb866a5678ae7da3",
      "new_mode": 33188,
      "new_path": "internal/ceres/covariance_impl.cc"
    },
    {
      "type": "modify",
      "old_id": "c85c8e5cbf59b8fd3ef72423e752a8357cb8f0b8",
      "old_mode": 33188,
      "old_path": "internal/ceres/dogleg_strategy.cc",
      "new_id": "d2cab86373f501e5a178cc20acbc4c60142e2507",
      "new_mode": 33188,
      "new_path": "internal/ceres/dogleg_strategy.cc"
    },
    {
      "type": "modify",
      "old_id": "fad7c1f32583c13d6752ad5545963e5e8c47cbb4",
      "old_mode": 33188,
      "old_path": "internal/ceres/levenberg_marquardt_strategy.cc",
      "new_id": "009a95191457a25021cbe85b3d9cb91bd2f77c50",
      "new_mode": 33188,
      "new_path": "internal/ceres/levenberg_marquardt_strategy.cc"
    },
    {
      "type": "modify",
      "old_id": "b0ab80dd76350415121cbe28696df1d4ed9fd080",
      "old_mode": 33188,
      "old_path": "internal/ceres/linear_solver.h",
      "new_id": "4af586a4252c0d726a731dc6a2dc324ab55aceb2",
      "new_mode": 33188,
      "new_path": "internal/ceres/linear_solver.h"
    },
    {
      "type": "modify",
      "old_id": "b192aa1172b26c79a20b0b2c60aba26ddaa408b8",
      "old_mode": 33188,
      "old_path": "internal/ceres/schur_complement_solver.cc",
      "new_id": "91dd455f859010000f0f24b737c44fcd24e6dd70",
      "new_mode": 33188,
      "new_path": "internal/ceres/schur_complement_solver.cc"
    },
    {
      "type": "modify",
      "old_id": "b5a1c74ab1a115d9dd6b8da447a907dafe46dd68",
      "old_mode": 33188,
      "old_path": "internal/ceres/schur_complement_solver.h",
      "new_id": "3303205f2d7a139dfa33da7d7017234e9cbbe732",
      "new_mode": 33188,
      "new_path": "internal/ceres/schur_complement_solver.h"
    },
    {
      "type": "modify",
      "old_id": "f1a52378e2b2c2667fb09b2c2bf2fd9ef1be17ea",
      "old_mode": 33188,
      "old_path": "internal/ceres/sparse_normal_cholesky_solver.cc",
      "new_id": "697adc1ed826df55d729846d50c58d8013ff9b08",
      "new_mode": 33188,
      "new_path": "internal/ceres/sparse_normal_cholesky_solver.cc"
    },
    {
      "type": "modify",
      "old_id": "9de32fd76ad4a021fbc1b59eca743d0b6ac2abfb",
      "old_mode": 33188,
      "old_path": "internal/ceres/suitesparse.cc",
      "new_id": "ec93b1a7e0bab1a6b7ea949d294c72d29748a74d",
      "new_mode": 33188,
      "new_path": "internal/ceres/suitesparse.cc"
    },
    {
      "type": "modify",
      "old_id": "16f298ea79c1e91321d4d06bfd0691ffc663256e",
      "old_mode": 33188,
      "old_path": "internal/ceres/suitesparse.h",
      "new_id": "c029b6def206504d8490062cf0f496b8ef305087",
      "new_mode": 33188,
      "new_path": "internal/ceres/suitesparse.h"
    },
    {
      "type": "modify",
      "old_id": "ea7ee74d6f6219c272c9e9c1b92350515df76fbb",
      "old_mode": 33188,
      "old_path": "internal/ceres/trust_region_minimizer.cc",
      "new_id": "e09c008df7ce0459a0d8ac7bfe72e717eeedf8c3",
      "new_mode": 33188,
      "new_path": "internal/ceres/trust_region_minimizer.cc"
    },
    {
      "type": "modify",
      "old_id": "0dcdbfef016fedcc70bb4988030759f8089677d8",
      "old_mode": 33188,
      "old_path": "internal/ceres/trust_region_strategy.h",
      "new_id": "3f078d56d43217c9d264ff0498ad7b3e257607f9",
      "new_mode": 33188,
      "new_path": "internal/ceres/trust_region_strategy.h"
    },
    {
      "type": "modify",
      "old_id": "80f8d39e8430d7b11bc596b2ea12a79ba4d3fba5",
      "old_mode": 33188,
      "old_path": "internal/ceres/types.cc",
      "new_id": "5f3455fdd412a0cf520d8f68e65883914ca75ae1",
      "new_mode": 33188,
      "new_path": "internal/ceres/types.cc"
    },
    {
      "type": "modify",
      "old_id": "8104356eb83cd54c8e46d305886127cbfa33a815",
      "old_mode": 33188,
      "old_path": "internal/ceres/visibility_based_preconditioner.cc",
      "new_id": "aeaab122bb09e445c8d42da9d1ffa555eb12096d",
      "new_mode": 33188,
      "new_path": "internal/ceres/visibility_based_preconditioner.cc"
    },
    {
      "type": "modify",
      "old_id": "c58b1a7a90a8f0a67a00672ef7b1ad547aa7d324",
      "old_mode": 33188,
      "old_path": "internal/ceres/visibility_based_preconditioner.h",
      "new_id": "70cea83bf56ef38f892951f874ff1081418f4e47",
      "new_mode": 33188,
      "new_path": "internal/ceres/visibility_based_preconditioner.h"
    }
  ]
}
