)]}'
{
  "commit": "4fbfede24b238d4c1b577c06a431cff059f08866",
  "tree": "a7f81058527bbce3735b4c138fe68bdf4163ca69",
  "parents": [
    "896e18e0f253450844c33eac00cf8210a0da33fb"
  ],
  "author": {
    "name": "Dariusz Luksza",
    "email": "dariusz.luksza@gmail.com",
    "time": "Fri Mar 01 17:57:05 2024 +0000"
  },
  "committer": {
    "name": "Dariusz Luksza",
    "email": "dariusz.luksza@gmail.com",
    "time": "Sat May 04 18:41:38 2024 +0100"
  },
  "message": "Track user activity in a persistent cache\n\nAdd a new Groovy script `track-active-users-1.0.groovy` to track user\nactivities by entering their `id` and timestamp into\n`track-active-users_cache` persistent cache.\n\nThe tracking is implemented as a side effect on a new\n`GroupBackend` implementation that handles all group `UUID`\u0027s. This way\nour backend `membershipsOf(CurrentUser)` method will be called whenever\nany group membership resolution is done. This gives us a single\nplace to get the user activities for all supported entry points (UI,\nREST, SSH, git-over-http). The impact of on the user group resolution\nshould be neglectable and should be equal to the performance of the\npersistent cache `get()` and `put()` calls. The user activity timestamp\nis stored with one-minute precision.\n\nBear in mind, that in the case of git-over-http access to public\nrepositories, even when the user provides authentication details, Gerrit\nwill not consult any of the `GroupBackend`\u0027s. This means that clones and\nfetches of publicly visible repositories will not be counted as user\nactivity.\n\nBug: Issue Issue 327730871\nChange-Id: I5827288d40bba4c6b1e7b20d9aae822db8eabc29\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "714358865a4b042ac1786d416c80affd192e77d3",
      "old_mode": 33188,
      "old_path": "admin/README.md",
      "new_id": "9cca5432381918301324fd11adcf9d4d5200d88b",
      "new_mode": 33188,
      "new_path": "admin/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "86a77a83c7408713bfbe00b51c7e8fa6939606bc",
      "new_mode": 33188,
      "new_path": "admin/track-active-users-1.0.groovy"
    }
  ]
}
