)]}'
{
  "commit": "7dc8a4f089c1ca4762cf6fbf2e77898607a5820a",
  "tree": "61fc8c9e579ab08880fbd17e396ad5d90272bb47",
  "parents": [
    "1128326adde8f2c98bddc58ce1879fca7b2cd41f"
  ],
  "author": {
    "name": "Robin Stocker",
    "email": "robin@nibor.org",
    "time": "Wed Oct 16 23:51:24 2013 +0200"
  },
  "committer": {
    "name": "Robin Stocker",
    "email": "robin@nibor.org",
    "time": "Tue Dec 03 21:05:37 2013 +0100"
  },
  "message": "Fix exception on conflicts with recursive merge\n\nWhen there are conflicts with a recursive merge, the conflicting paths\nare stored in unmergedPaths (field in ResolveMerger). Later, when the\nMergeResult is constructed in MergeCommand, getBaseCommit is called,\nwhich computes the merge base a second time.\n\nIn case of RecursiveMerger, getBaseCommit merges the multiple merge\nbases into one. It does this not by creating a new ResolveMerger but\ninstead calling mergeTrees. The problem with mergeTrees is that at the\nend, it checks if unmergedPaths is non-empty and returns false in that\ncase.\n\nBecause unmergedPaths was already non-empty because of the real merge,\nit thinks that there were conflicts when computing the merge base again,\nwhen there really were none.\n\nThis can be fixed by storing the base commit when computing it and then\nreturning that instead of computing it a second time.\n\nNote that another possible fix would be to just use a new ResolveMerger\nfor merging the merge bases instead. This would also remove the need to\nremember the old value of dircache, inCore and workingTreeIterator (see\nRecursiveMerger#getBaseCommit).\n\nBug: 419641\nChange-Id: Ib2ebf4e177498c22a9098aa225e3cfcf16bbd958\nSigned-off-by: Robin Stocker \u003crobin@nibor.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "29146dc5852d93734f44d3205745da497dc9a8f8",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit.test/tst/org/eclipse/jgit/api/MergeCommandTest.java",
      "new_id": "1eeb9f7c0d06817bd49b6865f29176ebe1530b63",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit.test/tst/org/eclipse/jgit/api/MergeCommandTest.java"
    },
    {
      "type": "modify",
      "old_id": "509203e528fde64c6ccda9a3b9f58e0aafdbcced",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/api/MergeCommand.java",
      "new_id": "78b260df71bb55927e5d988944b73df976c57747",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/api/MergeCommand.java"
    },
    {
      "type": "modify",
      "old_id": "2bc9d224492a3f877f1ab223af01fa83df1d213a",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/api/RevertCommand.java",
      "new_id": "bc1b29c2f6b9b4b4ce42c7d4b70762dc345c3ae0",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/api/RevertCommand.java"
    },
    {
      "type": "modify",
      "old_id": "13463287611e4709b8d50b37700bb1f03bc82b21",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/merge/Merger.java",
      "new_id": "6dba41298729a3e9868d1ead153d8354ec41a492",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/merge/Merger.java"
    },
    {
      "type": "modify",
      "old_id": "34bc9f5e4dcc6605c77b5246a188803b8f153e4a",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyOneSided.java",
      "new_id": "12d6c6b4139a3469b003f8d89cc400d960669a0a",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/merge/StrategyOneSided.java"
    },
    {
      "type": "modify",
      "old_id": "1ad791bb799f003c3f1beff7923b8fe2eab40a65",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/merge/ThreeWayMerger.java",
      "new_id": "fbedaef86596e4e1642e6eef57e0f4e5deb59878",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/merge/ThreeWayMerger.java"
    }
  ]
}
