)]}'
{
  "commit": "8ea82816652d20ac7070a8fcd60980568a8a293c",
  "tree": "f4128180ecc3be52716d7593974189513ca785d3",
  "parents": [
    "3e7b9dce27b1519f6745c89fe01f0b840acddb0a"
  ],
  "author": {
    "name": "Usman Akinyemi",
    "email": "usmanakinyemi202@gmail.com",
    "time": "Sun May 03 21:04:02 2026 +0530"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Mon May 04 10:11:17 2026 +0900"
  },
  "message": "push: support pushing to a remote group\n\n`git fetch` accepts a remote group name (configured via `remotes.\u003cname\u003e`\nin config) and fetches from each member remote. `git push` has no\nequivalent — it only accepts a single remote name.\n\nTeach `git push` to resolve its repository argument through\n`add_remote_or_group()`, which was made public in the previous patch,\nso that a user can push to all remotes in a group with:\n\n    git push \u003cgroup\u003e\n\nWhen the argument resolves to a single remote, the behaviour is\nidentical to before. When it resolves to a group, each member remote\nis pushed in sequence.\n\nThe group push path rebuilds the refspec list (`rs`) from scratch for\neach member remote so that per-remote push mappings configured via\n`remote.\u003cname\u003e.push` are resolved correctly against each specific\nremote. Without this, refspec entries would accumulate across iterations\nand each subsequent remote would receive a growing list of duplicated\nentries.\n\nMirror detection (`remote-\u003emirror`) is also evaluated per remote using\na copy of the flags, so that a mirror remote in the group cannot set\nTRANSPORT_PUSH_FORCE on subsequent non-mirror remotes in the same group.\n\nSuggested-by: Junio C Hamano \u003cgitster@pobox.com\u003e\nSigned-off-by: Usman Akinyemi \u003cusmanakinyemi202@gmail.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e5ba3a67421edce9429980fe738232af3f0191c4",
      "old_mode": 33188,
      "old_path": "Documentation/git-push.adoc",
      "new_id": "aa221c3909532e316293552b80ac9eccd3fdd511",
      "new_mode": 33188,
      "new_path": "Documentation/git-push.adoc"
    },
    {
      "type": "modify",
      "old_id": "7100ffba5da17ee49b2e6c07ff58e3edf3be1850",
      "old_mode": 33188,
      "old_path": "builtin/push.c",
      "new_id": "6021b71d66845567a155ddd2242ca6fb4fba4fb9",
      "new_mode": 33188,
      "new_path": "builtin/push.c"
    },
    {
      "type": "modify",
      "old_id": "9b2fa4dee807d67bae13f923040588072caddf5c",
      "old_mode": 33188,
      "old_path": "t/meson.build",
      "new_id": "215df033e07e32c39025b3e36243c997f788728e",
      "new_mode": 33188,
      "new_path": "t/meson.build"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a7d59352b1c03e4c947e4c34dc86cf7ed0388f58",
      "new_mode": 33261,
      "new_path": "t/t5566-push-group.sh"
    }
  ]
}
