)]}'
{
  "commit": "611dbc99bb47faafcd5d8356f455d122660e80d5",
  "tree": "1d31309953278665c00565cfae14d86c99bc14ba",
  "parents": [
    "3b27c6f519f4ca5a96466129046397d1f79574f8"
  ],
  "author": {
    "name": "Yecheng Zhao",
    "email": "zyecheng@google.com",
    "time": "Tue Apr 23 19:08:02 2024 +0000"
  },
  "committer": {
    "name": "Yecheng Zhao",
    "email": "zyecheng@google.com",
    "time": "Wed May 01 19:09:09 2024 +0000"
  },
  "message": "Put A/B/R logic in a separate libabr\n\nAdds a libabr library to host Fuchsia A/B/R logic without the gbl\ndependencies. This will be the first candidate for code share with\nFuchsia and will be replacing the Fuchsia libabr C library. libgbl may\nalso use the library to ensure backward compatibility for existing\ndevices that use the original libabr.\n\nThe library is mostly a line to line translation, including code\ncomments, from the Fuchsia C libabr. This makes sure that we are keeping\nall subtle considerations and bug fixes that we have accumulated over\nthe past.\n\nThe library provides a C static library build target that exports the\nsame C interfaces as C libabr. It currently passes all upstream tests\nin \"src/firmware/lib/abr/test/libabr_test.cc\". The only exceptions are\nthe `read/write_abr_metadata_custom` usage which we\u0027ll deprecate since\natlas is no longer relevant.\n\nBug: 336318818\n\nChange-Id: Ifa179ef6cd50a887dacefd8b92ac790918d34fe0\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "aa1eef194fb46f759bed6cac03d8920dadd2beca",
      "new_mode": 33188,
      "new_path": "gbl/libabr/BUILD"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "78cbe61d4620d85ea8a90db4901c40c0cffe2ad2",
      "new_mode": 33188,
      "new_path": "gbl/libabr/build/fuchsia/BUILD.gn"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "01105803576812e4f1c666f59fb91c179ea1cfe1",
      "new_mode": 33188,
      "new_path": "gbl/libabr/src/c_staticlib.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "dd0075c5a1c90fb2c8e37d7b46ecd1fa5fa916ab",
      "new_mode": 33188,
      "new_path": "gbl/libabr/src/lib.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0c446d3eaa4fa342e81531e62820cddd953fc287",
      "new_mode": 33188,
      "new_path": "gbl/libabr/src/utils.rs"
    },
    {
      "type": "modify",
      "old_id": "27b6952029c1c4004b4776c2a216e6e5248069d7",
      "old_mode": 33188,
      "old_path": "gbl/tests/BUILD",
      "new_id": "833d7a6ed0f7bf89d14aec70e742c7cf4c46ae25",
      "new_mode": 33188,
      "new_path": "gbl/tests/BUILD"
    }
  ]
}
