)]}'
{
  "commit": "44a75d9ea8a549d5eb3ab155bcca530b4e0ad595",
  "tree": "22eee76678ddc53816c4d0585cb29200c8ae3d12",
  "parents": [
    "231f5d9baf8502e581605c645b4a11bbc904a314"
  ],
  "author": {
    "name": "Shawn Pearce",
    "email": "spearce@spearce.org",
    "time": "Sat Aug 19 11:28:34 2017 -0700"
  },
  "committer": {
    "name": "Shawn Pearce",
    "email": "spearce@spearce.org",
    "time": "Mon Aug 21 15:39:08 2017 -0700"
  },
  "message": "reftable: explicitly store update_index per ref\n\nAdd an update_index to every reference in a reftable, storing the\nexact transaction that last modified the reference.  This is necessary\nto fix some merge race conditions.\n\nConsider updates at T1, T3 are present in two reftables.  Compacting\nthese will create a table with range [T1,T3].  If T2 arrives during\nor after the compaction its impossible for readers to know how to\nmerge the [T1,T3] table with the T2 table.\n\nWith an explicit update_index per reference, MergedReftable is able to\nindividually sort each reference, merging individual entries at T3\nfrom [T1,T3] ahead of identically named entries appearing in T2.\n\nChange-Id: Ie4065d4176a5a0207dcab9696ae05d086e042140\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "34f752950db3b4f245add96a17abf38c386c5c4d",
      "old_mode": 33188,
      "old_path": "Documentation/technical/reftable.md",
      "new_id": "47c61a350dec99076f0414b20be4b1f404052bc5",
      "new_mode": 33188,
      "new_path": "Documentation/technical/reftable.md"
    },
    {
      "type": "modify",
      "old_id": "f9ebaf69266011ffa46a13e6b7be358e54375b09",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/reftable/MergedReftableTest.java",
      "new_id": "adba048e6569b7a83cf9781e0347bcdd65131167",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/reftable/MergedReftableTest.java"
    },
    {
      "type": "modify",
      "old_id": "6809d7b2b2c28f0eb3f1746aa07c69bddd44a4a9",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/reftable/ReftableTest.java",
      "new_id": "3ea3061e38920d261a18d8c1cdc575d51dc28673",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/reftable/ReftableTest.java"
    },
    {
      "type": "modify",
      "old_id": "a92bedcebdb9617e7a344a064b091c53117cde75",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/BlockReader.java",
      "new_id": "ce2ba4a2e1bf19ef6c3f0f2903173ed33d742299",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/BlockReader.java"
    },
    {
      "type": "modify",
      "old_id": "8f3e889de607f37cd25e13af9c69532db0c52d23",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/BlockWriter.java",
      "new_id": "b3173e838c5856cd273fe2d601889a8b076eadb5",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/BlockWriter.java"
    },
    {
      "type": "modify",
      "old_id": "71144cd30dfa3349583d36584e595e93854b6e9d",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/MergedReftable.java",
      "new_id": "9fc6ae2bb444295cdf008bc0512c2dba664d8fb4",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/MergedReftable.java"
    },
    {
      "type": "modify",
      "old_id": "786fae1a69ae920a6c751894aa7c79cad054b92d",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/RefCursor.java",
      "new_id": "d8e9c609f0bacd14387a7e272d7ea0b280c041e1",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/RefCursor.java"
    },
    {
      "type": "modify",
      "old_id": "4f9226710084aadb9c812c50a8cfa5ae89b3895b",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableCompactor.java",
      "new_id": "e7f406ce0dfe5b106abee87cbe6e2dac1f74b989",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableCompactor.java"
    },
    {
      "type": "modify",
      "old_id": "be1eb40edb73da8c0c96f2361f5d8385440b4c20",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableReader.java",
      "new_id": "407a77c7d3061211168e2f4511395587822979b3",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableReader.java"
    },
    {
      "type": "modify",
      "old_id": "45b759f9523333e081431039b236987b68b37fde",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableWriter.java",
      "new_id": "0ac2445fc04a29659e1b6672c0f183fe4d3526d4",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableWriter.java"
    }
  ]
}
