)]}'
{
  "commit": "2156aa894cefbabd322fc405138c306bb4e939cd",
  "tree": "d02fd77a9510e41fd90a4aa018c1fa2016163918",
  "parents": [
    "882d03f70e089bfad2fe2e84f4f9cd69e805e332"
  ],
  "author": {
    "name": "Shawn O. Pearce",
    "email": "spearce@spearce.org",
    "time": "Thu Feb 11 18:10:45 2010 -0800"
  },
  "committer": {
    "name": "Shawn O. Pearce",
    "email": "spearce@spearce.org",
    "time": "Fri Mar 12 16:08:14 2010 -0800"
  },
  "message": "Reduce multi-level buffered streams in transport code\n\nSome transports actually provide stream buffering on their own,\nwithout needing to be wrapped up inside of a BufferedInputStream in\norder to smooth out system calls to read or write.  A great example\nof this is the JSch SSH client, or the Apache MINA SSHD server.\nBoth use custom buffering to packetize the streams into the encrypted\nSSH channel, and wrapping them up inside of a BufferedInputStream\nor BufferedOutputStream is relatively pointless.\n\nOur SideBandOutputStream implementation also provides some fairly\nlarge buffering, equal to one complete side-band packet on the main\ndata channel.  Wrapping that inside of a BufferedOutputStream just to\nsmooth out small writes from PackWriter causes extra data copies, and\nprovides no advantage.  We can save some memory and some CPU cycles\nby letting PackWriter dump directly into the SideBandOutputStream\u0027s\ninternal buffer array.\n\nInstead we push the buffering streams down to be as close to the\nnetwork socket (or operating system pipe) as possible.  This allows\nus to smooth out the smaller reads/writes from pkt-line messages\nduring advertisement and negotation, but avoid copying altogether\nwhen the stream switches to larger writes over a side band channel.\n\nChange-Id: I2f6f16caee64783c77d3dd1b2a41b3cc0c64c159\nSigned-off-by: Shawn O. Pearce \u003cspearce@spearce.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e738276bd84a443262052c5f23cc910d588a71e7",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java",
      "new_id": "59504aa7802069c1c629c1ee15d05e8575819a3b",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java"
    },
    {
      "type": "modify",
      "old_id": "9e83aa0e1ee1feeccc8f1553aa6657018aaf4409",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConcurrentRepackTest.java",
      "new_id": "69430ed334a3874748a013e98fe4c73bfce8a04a",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConcurrentRepackTest.java"
    },
    {
      "type": "modify",
      "old_id": "6162deab7f16e5e8b12b300158223e6840e8e872",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/lib/PackWriter.java",
      "new_id": "b30e5f7c238f35eb167f80f3a063467f6aad3e0e",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/lib/PackWriter.java"
    },
    {
      "type": "modify",
      "old_id": "0411c61fa4207d92430817ee4acd09784a47c06a",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackConnection.java",
      "new_id": "a2c572c601fda3c151e104df986f6e1b69be63ae",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackConnection.java"
    },
    {
      "type": "modify",
      "old_id": "ba1170747406667f564dc13d12b349a56f2471bb",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java",
      "new_id": "e10cefd3abe6d4870c6f4d6b8162f48a67bf5136",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java"
    },
    {
      "type": "modify",
      "old_id": "db1312ca303d50ed9ccda37331046b651095052f",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/transport/BundleWriter.java",
      "new_id": "7b0a5eec4545510ee63c965be34302f22ffe17ca",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/transport/BundleWriter.java"
    },
    {
      "type": "modify",
      "old_id": "a127ff50abd9d851f11f47c918db7aaa3b3a621b",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitAnon.java",
      "new_id": "8a0b4357cd56e76e17808949bac7605454108915",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportGitAnon.java"
    },
    {
      "type": "modify",
      "old_id": "a9bdcd809155170fcc9b5d5918efc712257e2584",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportLocal.java",
      "new_id": "b9b9dbd0012e9d00209cad9385d2c57cc7e95f54",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportLocal.java"
    },
    {
      "type": "modify",
      "old_id": "39c4243bad7bf96ec3424b476a3c5ed0f017ea04",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java",
      "new_id": "3d5abd34bd6f874e87c1fe019734da4c7fc9d1a3",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java"
    },
    {
      "type": "modify",
      "old_id": "88b7ca438b49ca6a64e3740676a4064b3dcec821",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/transport/WalkPushConnection.java",
      "new_id": "f977915bb3902cb92b6a2fedae57266da7d31d1e",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/transport/WalkPushConnection.java"
    }
  ]
}
