)]}'
{
  "commit": "421735d8f70b40e470d37d9f76c76319bad029a0",
  "tree": "1d49bfe5fcc47630dbc06224ff6098844df1d2c7",
  "parents": [
    "e705c894d89c6afbf1e26dc47b71c1e81deba812"
  ],
  "author": {
    "name": "Gal Paikin",
    "email": "paiking@google.com",
    "time": "Fri Jan 22 10:08:33 2021 +0100"
  },
  "committer": {
    "name": "Gal Paikin",
    "email": "paiking@google.com",
    "time": "Wed Jan 27 10:17:01 2021 +0000"
  },
  "message": "Allow posting the same vote on a new patchset\n\nCurrently, we don\u0027t allow adding a new vote if the exact vote already\nexists. This is a reasonable behavior for voting again on the same\npatchset, but it is strange across multiple patchsets, example:\n\n1. User votes +2 on Code-Review.\n2. Change owner creates a new patchset, and the vote is carried over.\n3. User wants to vote +2 again, but can\u0027t, as the user already voted.\n\nThis should also be fixed in the frontend, as the frontend doesn\u0027t allow\nclicking \"send\" at all if there are no changes (and the vote +2 was\ncarried over).\n\nThis bug fix is a blocker for a follow-up feature that would add a\nmessage and new content to the \"submitted\" email, such that users will\nknow the diff between the latest approved patchset and the submitted\npatchset in case of sticky votes. We allow revoting on a label such that\nthe \"latest approved patchset\" will be up to date.\n\nIt\u0027s better to allow voting on the label even multiple times on the same\npatch-set, as this is more correct to adjust the timestamp of the vote\nwhen voting again. This has some side effects:\n1. Change message will be posted that the user voted.\n2. Email may be different (mentioning the vote as opposed to not\nmentioning the vote).\n3. Events will fire with the vote (as opposed to fire without the vote).\n\nAll of those side effects are okay.\n\nChange-Id: Ide1b122b6ac8788b42c4cc8cdfb486ac8d544375\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "bf9990c6776b3b9e24e36f6b0277ecbad54b2155",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/restapi/change/PostReview.java",
      "new_id": "a360510428f6449e3222a8962fe2a865158f3243",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/restapi/change/PostReview.java"
    },
    {
      "type": "modify",
      "old_id": "036e531a13c674a13b2ef6ef46aa3b6b67cf4e2f",
      "old_mode": 33188,
      "old_path": "javatests/com/google/gerrit/acceptance/api/change/PostReviewIT.java",
      "new_id": "0b2e0f7c11c2e9dcbdecf54008c34da16be1478e",
      "new_mode": 33188,
      "new_path": "javatests/com/google/gerrit/acceptance/api/change/PostReviewIT.java"
    },
    {
      "type": "modify",
      "old_id": "1e7271a3ab2f7abff591631d3e4775134b31da9f",
      "old_mode": 33188,
      "old_path": "javatests/com/google/gerrit/acceptance/api/change/StickyApprovalsIT.java",
      "new_id": "5c59129584e6097846549806e50c4d1a3e6a5f22",
      "new_mode": 33188,
      "new_path": "javatests/com/google/gerrit/acceptance/api/change/StickyApprovalsIT.java"
    },
    {
      "type": "modify",
      "old_id": "6c53269972d7477ffe200eadd2c0ed8b07eb425c",
      "old_mode": 33188,
      "old_path": "javatests/com/google/gerrit/acceptance/api/revision/RevisionIT.java",
      "new_id": "04e8706baac2c1dc7ab85ec82b56179e038335ed",
      "new_mode": 33188,
      "new_path": "javatests/com/google/gerrit/acceptance/api/revision/RevisionIT.java"
    },
    {
      "type": "modify",
      "old_id": "bc61faee3c13a6431812e10c7cc54f3d3bf47f2e",
      "old_mode": 33188,
      "old_path": "javatests/com/google/gerrit/acceptance/rest/change/AbstractSubmit.java",
      "new_id": "796ce3862af11dbcf9867ac8cb06e18b44c578dd",
      "new_mode": 33188,
      "new_path": "javatests/com/google/gerrit/acceptance/rest/change/AbstractSubmit.java"
    }
  ]
}
