)]}'
{
  "commit": "6a9d3509734533fd09e19983f6f60427ab7b0e0b",
  "tree": "25797e98ee0e1ae18fe7689318038a4bf584fbd6",
  "parents": [
    "03b4234d418def5b93dc6057ec1ae03df1d60573"
  ],
  "author": {
    "name": "Sayed Nabhan",
    "email": "nabhan@bugqore.com",
    "time": "Fri Jul 17 13:08:12 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Fri Jul 17 13:08:49 2026 -0700"
  },
  "message": "PR #2109: carry field normalization into parsed year in ParseYearAnd\n\nImported from GitHub PR https://github.com/abseil/abseil-cpp/pull/2109\n\n**Dropped year carry in ParseCivilTime**\n\n`ParseYearAnd` parses the year on its own and normalizes it into the ~2400 range before handing the rest of the string to `ParseTime`, then rebuilds the result from the original year plus the normalized month..second fields taken from `cs`. When one of those fields carries across the year boundary (a `:60` leap second at `23:59:60` on Dec 31, or an end-of-year rollover), that carry lives in `cs.year()` and was dropped, so `ParseCivilTime(\"2020-12-31T23:59:60\")` produced `2020-01-01T00:00:00` while constructing `CivilSecond(2020, 12, 31, 23, 59, 60)` directly gives `2021-01-01T00:00:00`. This reapplies the same carry to the original year, which is a no-op whenever no rollover happened.\nMerge af31d66e1109de628f4e1ffb4f760b27ec7f39ca into 63c77e4060d6b4aefb9d85f9205c2d109d5fd9b8\n\nMerging this change closes #2109\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/abseil/abseil-cpp/pull/2109 from nabhan06:civil-time-year-carry af31d66e1109de628f4e1ffb4f760b27ec7f39ca\nPiperOrigin-RevId: 949723541\nChange-Id: I015bcd78575306136677e3dfc1f478066e2dca71\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1773366be0c840b732fd71174d105cd711172e12",
      "old_mode": 33188,
      "old_path": "absl/time/civil_time.cc",
      "new_id": "eae7e7f48f8008ae1cfd5d7f82a3fc165f957af7",
      "new_mode": 33188,
      "new_path": "absl/time/civil_time.cc"
    },
    {
      "type": "modify",
      "old_id": "b1e1f39c2c394add047a2620702cefd77170c412",
      "old_mode": 33188,
      "old_path": "absl/time/civil_time_test.cc",
      "new_id": "3ad8e14b7d619e2748c3a48cab3c4d449d67bd4c",
      "new_mode": 33188,
      "new_path": "absl/time/civil_time_test.cc"
    }
  ]
}
