)]}'
{
  "commit": "125a0e9be51d3876d3a6f03111a3b80b4c8b7bb8",
  "tree": "5af420c28c4f662b2ccd562099348ae7a38cea01",
  "parents": [
    "00bfbae11f27a50c5a8017161ec1ee3d049c5895"
  ],
  "author": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Tue Dec 28 07:05:03 2021 -0800"
  },
  "committer": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Tue Jan 18 15:59:45 2022 -0800"
  },
  "message": "LocalParameterization -\u003e Manifold #1\n\nManifolds are now part of the public API and co-exist\nwith LocalParameterizations.\n\n1. Add Manifolds to the Problem API.\n   a. AddParameterBlock(double*, int, Manifold*)\n   b. SetParameterization(double*, Manifold*)\n   b. GetManifold(const double*)\n   c. HasManifold(const double*)\n\n2. Internally Ceres now only uses Manifolds. When the user uses\n   a LocalParameterization, it is wrapped in a ManifoldAdapter.\n\n3. To preserve the API semantics while keeping the internals clean\n   we need a new map in ProblemImpl which stores the association\n   between parameter blocks and local parameterizations. This\n   is temporary, it will go away once this transition is complete.\n\n4. There are NO algorithmic changes, as in we are not using\n   any of the expanded interface of the Manifold objects yet.\n   That will come later.\n\n5. All tests that use LocalParameterization have been duplicated\n   to use Manifolds, and when this transition is complete the\n   LocalParameterization based tests will be deleted.\n\n6. Public documentation for the API has been updated. Deprecation\n   notices to the documentation as well as C++ annotations will come\n   later.\n\n7. Similar changes have been made to GradientProblem.\n\nChange-Id: I8e03c8ced6e141876ef3eca5740c113afa788f0c\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4851be506dce108eeca43567c76c392c8bbeb7e2",
      "old_mode": 33188,
      "old_path": "CMakeLists.txt",
      "new_id": "68d99c90956995476fe4f90f3978fa85c5aef009",
      "new_mode": 33188,
      "new_path": "CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "b79cf86b31494deb59f3049d0ed18c83b91e1cbf",
      "old_mode": 33188,
      "old_path": "include/ceres/gradient_checker.h",
      "new_id": "f2ea0fc7503d7b26c70ddc2ca92337a13d08fa67",
      "new_mode": 33188,
      "new_path": "include/ceres/gradient_checker.h"
    },
    {
      "type": "modify",
      "old_id": "7caeef11da6639c01bb556dec13aae316969d0b6",
      "old_mode": 33188,
      "old_path": "include/ceres/gradient_problem.h",
      "new_id": "d9d40e26c1f974c734f0e851b82d51b96a19182d",
      "new_mode": 33188,
      "new_path": "include/ceres/gradient_problem.h"
    },
    {
      "type": "modify",
      "old_id": "734a9686308fa6006e0a7e2158f70b971f21a0f8",
      "old_mode": 33188,
      "old_path": "include/ceres/problem.h",
      "new_id": "4436e519ad927b3e5e45bd988263408be980285c",
      "new_mode": 33188,
      "new_path": "include/ceres/problem.h"
    },
    {
      "type": "modify",
      "old_id": "a76cc1099c53055e6dd978d543226e15fd4ac037",
      "old_mode": 33188,
      "old_path": "include/ceres/version.h",
      "new_id": "557847e5eb3f5fb304ec7bf66467db6656d1d3cf",
      "new_mode": 33188,
      "new_path": "include/ceres/version.h"
    },
    {
      "type": "modify",
      "old_id": "17c157b47f916a4557531e9f3e7115391a9f8c5f",
      "old_mode": 33188,
      "old_path": "internal/ceres/block_jacobian_writer.cc",
      "new_id": "e589c34467fd48de6648eacae658bdb85989f947",
      "new_mode": 33188,
      "new_path": "internal/ceres/block_jacobian_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "8e7e3e7e7e65413df154fd9b8278348a9cb322ce",
      "old_mode": 33188,
      "old_path": "internal/ceres/compressed_row_jacobian_writer.cc",
      "new_id": "c6a300198348171cc40acd228f169d5153daf59a",
      "new_mode": 33188,
      "new_path": "internal/ceres/compressed_row_jacobian_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "93cf41b1eefca919ac494a525d72c7c39ef724fa",
      "old_mode": 33188,
      "old_path": "internal/ceres/covariance_impl.cc",
      "new_id": "2180845c495eac1b8fd4feb9a219b56e4c86bfe0",
      "new_mode": 33188,
      "new_path": "internal/ceres/covariance_impl.cc"
    },
    {
      "type": "modify",
      "old_id": "229173fb7e279d0182bb76765d151d8a1b019520",
      "old_mode": 33188,
      "old_path": "internal/ceres/covariance_test.cc",
      "new_id": "1f3a75a4ea7e77cbf0528b93f36c9f87c8d17f8b",
      "new_mode": 33188,
      "new_path": "internal/ceres/covariance_test.cc"
    },
    {
      "type": "modify",
      "old_id": "28c60e20a1b35a91a04be134eb62fc7d92254812",
      "old_mode": 33188,
      "old_path": "internal/ceres/dense_jacobian_writer.h",
      "new_id": "1d7187c580b8cf15915e745c703e3b990475b456",
      "new_mode": 33188,
      "new_path": "internal/ceres/dense_jacobian_writer.h"
    },
    {
      "type": "modify",
      "old_id": "1749449043eb8ac2ecd363a07165dfb1be254e94",
      "old_mode": 33188,
      "old_path": "internal/ceres/dynamic_compressed_row_jacobian_writer.cc",
      "new_id": "9f709a3b65000d066821c667428f9d514ef43b25",
      "new_mode": 33188,
      "new_path": "internal/ceres/dynamic_compressed_row_jacobian_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "9cf42593e958801d6f0ce0552438abb8446dae15",
      "old_mode": 33188,
      "old_path": "internal/ceres/evaluator.h",
      "new_id": "5c9cd56e6e82f1369b34ded0972d8d510fe3b35f",
      "new_mode": 33188,
      "new_path": "internal/ceres/evaluator.h"
    },
    {
      "type": "modify",
      "old_id": "5ddb73375690bb830493ab9f565a96490499a68e",
      "old_mode": 33188,
      "old_path": "internal/ceres/evaluator_test.cc",
      "new_id": "7aaf1b0ff534a9c0feae27642713df36d7597c22",
      "new_mode": 33188,
      "new_path": "internal/ceres/evaluator_test.cc"
    },
    {
      "type": "modify",
      "old_id": "dadaaa0873454b4e561c1bf7a8b9698806d6b4fa",
      "old_mode": 33188,
      "old_path": "internal/ceres/gradient_checker.cc",
      "new_id": "6ae7d555e26623c4ebf137ede80eb6d0097ab75c",
      "new_mode": 33188,
      "new_path": "internal/ceres/gradient_checker.cc"
    },
    {
      "type": "modify",
      "old_id": "31dc97b044abb91116970bf6e6dafb036ebd4165",
      "old_mode": 33188,
      "old_path": "internal/ceres/gradient_checker_test.cc",
      "new_id": "c7d08cbc39d8957774d8d2b77aae366b2e3130c4",
      "new_mode": 33188,
      "new_path": "internal/ceres/gradient_checker_test.cc"
    },
    {
      "type": "modify",
      "old_id": "2eb6d627167d3bef63aefe77694fe36a1dffb7ec",
      "old_mode": 33188,
      "old_path": "internal/ceres/gradient_checking_cost_function.cc",
      "new_id": "4bd5bcc95822c5f174370c9de6029ec7d07e5cc0",
      "new_mode": 33188,
      "new_path": "internal/ceres/gradient_checking_cost_function.cc"
    },
    {
      "type": "modify",
      "old_id": "ea6e9b31c8cb8e7abd981683235197cb85e3f46e",
      "old_mode": 33188,
      "old_path": "internal/ceres/gradient_checking_cost_function.h",
      "new_id": "46cf4dde9754759a39d94ddfc7060f64e7cd437d",
      "new_mode": 33188,
      "new_path": "internal/ceres/gradient_checking_cost_function.h"
    },
    {
      "type": "modify",
      "old_id": "9ca51f836645cb683b7b0da2a3683ee92081f9d0",
      "old_mode": 33188,
      "old_path": "internal/ceres/gradient_checking_cost_function_test.cc",
      "new_id": "8c47c35fb95f273816c5c6d657674084355f4477",
      "new_mode": 33188,
      "new_path": "internal/ceres/gradient_checking_cost_function_test.cc"
    },
    {
      "type": "modify",
      "old_id": "ba33fbc90f8081a74f42024e1f8cbe1c2939efc3",
      "old_mode": 33188,
      "old_path": "internal/ceres/gradient_problem.cc",
      "new_id": "dc8ac7225f0afbb6d4cb0997bf9519129e1e56ca",
      "new_mode": 33188,
      "new_path": "internal/ceres/gradient_problem.cc"
    },
    {
      "type": "modify",
      "old_id": "8934138ec3e4449d65eb660624792491b706faa7",
      "old_mode": 33188,
      "old_path": "internal/ceres/gradient_problem_test.cc",
      "new_id": "7a279a3fc2da7b7ab97c3ab726a941d14ab22b9d",
      "new_mode": 33188,
      "new_path": "internal/ceres/gradient_problem_test.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "49d7a0af9359af78876617ef10e50f4aa36d7594",
      "new_mode": 33188,
      "new_path": "internal/ceres/manifold_adapter.h"
    },
    {
      "type": "modify",
      "old_id": "88943dfbcff536eab149554fa175591a3f2b1c02",
      "old_mode": 33188,
      "old_path": "internal/ceres/parameter_block.h",
      "new_id": "824745c9f02af943dcb8a03573dfb32c036ef371",
      "new_mode": 33188,
      "new_path": "internal/ceres/parameter_block.h"
    },
    {
      "type": "modify",
      "old_id": "a5a4230dc6c055a134aaaf5eada6e3a54967459f",
      "old_mode": 33188,
      "old_path": "internal/ceres/parameter_block_test.cc",
      "new_id": "713a0f7b635d950cdb49ff3324875ce844f95cf6",
      "new_mode": 33188,
      "new_path": "internal/ceres/parameter_block_test.cc"
    },
    {
      "type": "modify",
      "old_id": "de4a2b3314fe1af4499df9447366c6c2f9312562",
      "old_mode": 33188,
      "old_path": "internal/ceres/problem.cc",
      "new_id": "f4e9f878451634d944ced2c1052574357960e7b4",
      "new_mode": 33188,
      "new_path": "internal/ceres/problem.cc"
    },
    {
      "type": "modify",
      "old_id": "492cabc09f84a162b9bd3172c1eb38381ecf5eb1",
      "old_mode": 33188,
      "old_path": "internal/ceres/problem_impl.cc",
      "new_id": "9e1a2c1e6677cf1b3bbab90dcb5c8a1329bcb281",
      "new_mode": 33188,
      "new_path": "internal/ceres/problem_impl.cc"
    },
    {
      "type": "modify",
      "old_id": "5051c575f4ca9d7bb5d014b71d80f186fe210fe4",
      "old_mode": 33188,
      "old_path": "internal/ceres/problem_impl.h",
      "new_id": "2a3e1e4c3b13d43d23a1d39eba4289a13d23dca9",
      "new_mode": 33188,
      "new_path": "internal/ceres/problem_impl.h"
    },
    {
      "type": "modify",
      "old_id": "67faa7e194b98d8b6a24a8803fb035ebb3883e64",
      "old_mode": 33188,
      "old_path": "internal/ceres/problem_test.cc",
      "new_id": "3d00f3031ab7c1bd87d1146c1aa5f13ecaeaa22d",
      "new_mode": 33188,
      "new_path": "internal/ceres/problem_test.cc"
    },
    {
      "type": "modify",
      "old_id": "f1ded2e5d5a0bcd461572af4a1f8f5d3dbdf41e4",
      "old_mode": 33188,
      "old_path": "internal/ceres/program.cc",
      "new_id": "341564b1caac24addffc0970b2b9c0d7a5c790d7",
      "new_mode": 33188,
      "new_path": "internal/ceres/program.cc"
    },
    {
      "type": "modify",
      "old_id": "ca29d316284fd8183e50cf4d2b5c4120af361ed1",
      "old_mode": 33188,
      "old_path": "internal/ceres/program.h",
      "new_id": "343cf8e6c02c85ed8164ead24ee60007af5b3566",
      "new_mode": 33188,
      "new_path": "internal/ceres/program.h"
    },
    {
      "type": "modify",
      "old_id": "36c9c64baf67673237b82aad9894cccf031e6926",
      "old_mode": 33188,
      "old_path": "internal/ceres/program_evaluator.h",
      "new_id": "4ab557fc57bbeab3072c0b64db9cf1687f8c7d00",
      "new_mode": 33188,
      "new_path": "internal/ceres/program_evaluator.h"
    },
    {
      "type": "modify",
      "old_id": "067c9efe83d17a770f3c688f5798dfbf0080f0e8",
      "old_mode": 33188,
      "old_path": "internal/ceres/residual_block.cc",
      "new_id": "cd408f2f98e57a463687ba346686b6a9708181c7",
      "new_mode": 33188,
      "new_path": "internal/ceres/residual_block.cc"
    },
    {
      "type": "modify",
      "old_id": "f28fd42857c7f3af9dbfe814126445a96c258b72",
      "old_mode": 33188,
      "old_path": "internal/ceres/residual_block.h",
      "new_id": "888a44a6863722d1a33663004cb1954d1a85a3b1",
      "new_mode": 33188,
      "new_path": "internal/ceres/residual_block.h"
    },
    {
      "type": "modify",
      "old_id": "3c05f4843f7901f5937673938a93d981e462a34c",
      "old_mode": 33188,
      "old_path": "internal/ceres/residual_block_test.cc",
      "new_id": "d5870582b7169928d5eb989640990f0eb47ec766",
      "new_mode": 33188,
      "new_path": "internal/ceres/residual_block_test.cc"
    },
    {
      "type": "modify",
      "old_id": "9905b220fbfe65e27f8e4b4ff386b14d6a9ffd85",
      "old_mode": 33188,
      "old_path": "internal/ceres/scratch_evaluate_preparer.cc",
      "new_id": "d8fee30c99b58aaac7beb607ccb466dd7fdb7482",
      "new_mode": 33188,
      "new_path": "internal/ceres/scratch_evaluate_preparer.cc"
    },
    {
      "type": "modify",
      "old_id": "c4823be8d253cf7860a139674344356cd15a11b9",
      "old_mode": 33188,
      "old_path": "internal/ceres/solver_test.cc",
      "new_id": "98c38fdf8961d577590f933830487a6d7b2ef773",
      "new_mode": 33188,
      "new_path": "internal/ceres/solver_test.cc"
    },
    {
      "type": "modify",
      "old_id": "bcf05b3ddfb26a60b9559d4a633e79b0da719b1d",
      "old_mode": 33188,
      "old_path": "internal/ceres/trust_region_minimizer.cc",
      "new_id": "d8487958b21412541100ebe7afcba44df7febe96",
      "new_mode": 33188,
      "new_path": "internal/ceres/trust_region_minimizer.cc"
    },
    {
      "type": "modify",
      "old_id": "a1c48b6ec03af4fa6ec16d233a65008f49aeb626",
      "old_mode": 33188,
      "old_path": "internal/ceres/trust_region_minimizer_test.cc",
      "new_id": "cad30eb3a67116b242e7c8e4210f8ea59cd0cc0f",
      "new_mode": 33188,
      "new_path": "internal/ceres/trust_region_minimizer_test.cc"
    }
  ]
}
