)]}'
{
  "commit": "07fa83bfacc1a42e9a079666bf17393e10a9b514",
  "tree": "21610bb4f279ebf5a06433a32466e2d11033857a",
  "parents": [
    "1bfe14d0356764597b1b23adb45dd2a1f299538e"
  ],
  "author": {
    "name": "Luca Milanesio",
    "email": "luca.milanesio@gmail.com",
    "time": "Thu Oct 27 00:06:48 2022 +0100"
  },
  "committer": {
    "name": "Luca Milanesio",
    "email": "luca.milanesio@gmail.com",
    "time": "Fri Nov 04 10:29:39 2022 +0000"
  },
  "message": "Allow indexing of change numbers imported from other servers\n\nWhen importing repositories form other Gerrit servers, you may\nhave change numbers that are conflicting with other existing\nchanges created locally.\n\nThe conflict is not an issue from a project\u0027s perspective\nbecause they are still unique within the same repository.\nHowever, the Change.Id is used as primary key in Lucene\nand therefore the imported changes would not be able to\nbe indexed.\n\nBy creating a virtual Change.Id for imported changes, the\nLucene indexing works as expected and the changes are\ndiscoverable.\n\nThe Gerrit\u0027s ServerIds of the changes imported from other servers\nare encoded in the three MSB (Most Significant Bit) of the\nChange number, allowing up to 64 Gerrit servers with different\nServerIds to be imported, each one having up to 250M changes.\n\nThe above constraints are good enough for an initial solution\nin Gerrit v3.7 that doesn\u0027t require any migration or reindex.\n\nThe encoding of the Gerrit imported ServerIds is done using a\ndictionary that take the id as key and its position in the list as\nthe encoded value. That is a simple solution that gives complete\ncontrol and understanding of which change comes from where\nto the Gerrit admin and allows a smoother migration to a\nmore general solution on master and the forthcoming v3.8.\n\nThe normal upgrade to v3.8 typically requires an on-line\nreindex of the \u0027changes\u0027 index which will also automatically\nregenerate the index entries with the virtual-id, making this\nchange fully forward-compatible.\n\nRelease-Notes: allow indexing of imported changes\nForward-Compatible: checked\nChange-Id: I7b9acabb69d20ca071629257cacbd5a893e6f4a0\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "032eb01267d1b388b3a480da03837b502e87c57e",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/lucene/LuceneChangeIndex.java",
      "new_id": "821719ffd341e798415c10d3a4ba6daeb76c199c",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/lucene/LuceneChangeIndex.java"
    },
    {
      "type": "modify",
      "old_id": "f3f76456ce7e66854143bf9c46f5f7deb01d5b56",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/config/GerritImportedServerIdsProvider.java",
      "new_id": "2a74833357817c0c4906cc27a702fab3527cc262",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/config/GerritImportedServerIdsProvider.java"
    },
    {
      "type": "modify",
      "old_id": "0e066d6a089c05a30d872df06e3ffd6333c6ea1d",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/index/change/ChangeField.java",
      "new_id": "f1b0b9652b7962d97c73c8bddb1cd68bb5cfc40c",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/index/change/ChangeField.java"
    },
    {
      "type": "modify",
      "old_id": "3757244f8fc85e83609e9b1ec22ae31be10288f5",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/notedb/AbstractChangeNotes.java",
      "new_id": "93f29f6ca6ea5db1cb3a6fbcccd50d961a3b19ca",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/notedb/AbstractChangeNotes.java"
    },
    {
      "type": "modify",
      "old_id": "134952394fa5a8f69489399be42758e7c1c38ef1",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/query/change/ChangeData.java",
      "new_id": "8ab978653582f56d63c3bfd30409be24b5e0f0d0",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/query/change/ChangeData.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "726a3767c42863f3e3076f8dc5c71ebaf1232b8f",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/query/change/ChangeNumberBitmapMaskAlgorithm.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ab217050b9fe8a6a9faa644da2b1565b5695cd56",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/query/change/ChangeNumberVirtualIdAlgorithm.java"
    },
    {
      "type": "modify",
      "old_id": "e0e64a31e80aba30365db75eed3afd205b452ff1",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/server/schema/SchemaModule.java",
      "new_id": "9593522c7d6ba1864656d66b236f40bac5071faf",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/server/schema/SchemaModule.java"
    },
    {
      "type": "modify",
      "old_id": "b1ab6b1b9ad7f45f3f63a399330d5f3428711de1",
      "old_mode": 33188,
      "old_path": "java/com/google/gerrit/testing/InMemoryModule.java",
      "new_id": "1afacabbe738e647923ae9f73cf7cb9fda6b6345",
      "new_mode": 33188,
      "new_path": "java/com/google/gerrit/testing/InMemoryModule.java"
    },
    {
      "type": "modify",
      "old_id": "0bdf5cdd5f16e5e1de1174e6ccede43fc0d444d6",
      "old_mode": 33188,
      "old_path": "javatests/com/google/gerrit/server/index/change/ChangeFieldTest.java",
      "new_id": "e35941c2e2945aa835925545dcf2fb118a371905",
      "new_mode": 33188,
      "new_path": "javatests/com/google/gerrit/server/index/change/ChangeFieldTest.java"
    },
    {
      "type": "modify",
      "old_id": "1b286d18ebf9d6e42ea94704e81f9ed4a214bb55",
      "old_mode": 33188,
      "old_path": "javatests/com/google/gerrit/server/notedb/AbstractChangeNotesTest.java",
      "new_id": "e8cc6b462e18ea920997f094906ff57ee18929a4",
      "new_mode": 33188,
      "new_path": "javatests/com/google/gerrit/server/notedb/AbstractChangeNotesTest.java"
    },
    {
      "type": "modify",
      "old_id": "e48d4afb4e9de97d12e9f97e7d5ad51c1c14e29a",
      "old_mode": 33188,
      "old_path": "javatests/com/google/gerrit/server/query/change/ChangeDataTest.java",
      "new_id": "5124021af3ebad80d1d0e218238856c1cafe63d9",
      "new_mode": 33188,
      "new_path": "javatests/com/google/gerrit/server/query/change/ChangeDataTest.java"
    }
  ]
}
