)]}'
{
  "commit": "e3f535cb15a75d6b2448bfadbc9839da8085f1ec",
  "tree": "1b48de4667141c947625203c966a137a9f66206d",
  "parents": [
    "84ac86ee61989bab441904e3e72b2b98199cccfc"
  ],
  "author": {
    "name": "Thomas Wolf",
    "email": "thomas.wolf@paranor.ch",
    "time": "Thu Sep 12 21:05:19 2019 +0200"
  },
  "committer": {
    "name": "Matthias Sohn",
    "email": "matthias.sohn@sap.com",
    "time": "Tue Sep 17 00:36:22 2019 +0200"
  },
  "message": "WorkingTreeIterator: handle different timestamp resolutions\n\nOlder JGit stored only milliseconds timestamps in the index. Newer\nJGit may get finer timestamps from the file system. This leads to\nslow index diffs when a new JGit runs against an index produced\nby older JGit because many timestamps will differ and JGit will\nthen do many content checks. See [1].\n\nHandle this migration case by only comparing milliseconds if the\nindex entry has only millisecond precision.\n\nThe inverse may also occur; also compare only milliseconds if the\nfile timestamp has only millisecond precision.\n\nDo the same also for microsecond resolution. On Windows, NTFS may\nprovide 100ns resolution and may be used by external programs writing\nthe index, but Java\u0027s WindowsFileAttributes may provide only\nmicroseconds.\n\nFile timestamp precision in Java depends not only on the Java APIs\nused by different JGit versions but may also change when running the\nsame Java code on different VMs. And of course the resolution may\nvary among operating and file systems. Moreover, timestamp precision\nin the index depends on the program that wrote the index. Canonical\ngit may use a different resolution, maybe even different between git\nversions.\n\n[1] https://www.eclipse.org/forums/index.php/t/1100344/\n\nChange-Id: Idfd08606c883cb98787b2138f9baf0cc89a57b56\nSigned-off-by: Thomas Wolf \u003cthomas.wolf@paranor.ch\u003e\nSigned-off-by: Matthias Sohn \u003cmatthias.sohn@sap.com\u003e",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "271b4ea3c8d9d4d6138f90d4ef6a8630d0999d84",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/InstantComparatorTest.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ffcb4b46ec3faad86c43c985706a02f03fa3c993",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/treewalk/InstantComparator.java"
    },
    {
      "type": "modify",
      "old_id": "a83165daa269461969d551f342c82e86b707ec4e",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java",
      "new_id": "83be8f6e017fbff627d23773099072cf5339d90c",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java"
    }
  ]
}
