)]}'
{
  "commit": "df0ba7f7ff02ed02c0ba7714ae928a79d932baef",
  "tree": "daf72f5876cffec0b185276bd86a7060bd7f9391",
  "parents": [
    "02c6a8c24505625c5f411c0af1019c7c1f443d07"
  ],
  "author": {
    "name": "Tom",
    "email": "tw201207@gmail.com",
    "time": "Sun Oct 26 18:10:13 2014 +0100"
  },
  "committer": {
    "name": "Tom",
    "email": "tw201207@gmail.com",
    "time": "Thu Nov 06 18:05:33 2014 +0100"
  },
  "message": "Improve the commitdiff.\n\n* Optimize CSS: simplify selectors. That alone cuts rendering time in\n  half!\n* Adapt HTML generation accordingly.\n* Change line number generation so that one can select only code lines.\n  Also move the +/- out of the code column; it also gets in the way\n  when selecting.\n* Omit long diffs altogether.\n* Omit diff lines for deleted files, they\u0027re not particularly\n  interesting.\n* Introduce a global limit on the maximum number of diff lines to show.\n* Supply translations for the languages I speak for the new messages.\n\nhttps://code.google.com/p/gitblit/issues/detail?id\u003d450 was about a diff\nwith nearly 300k changed lines (with more then 3000 files deleted). But\none doesn\u0027t have to have such a monster commit to run into problems. My\nFF 32 become unresponsive for the 30+ seconds it takes it to render a\ncommitdiff with some 30000 changed lines. (90% of which are in two\ngenerated files; the whole commit has just 20 files.) GitHub has no\nproblems showing a commitdiff for this commit, but omits the two large\ngenerated files, which makes sense.\n\nThis change implements a similar thing. Files with too many diff lines\nget omitted from the output, only the header and a message that the\ndiff is too large remains. Additionally, there\u0027s a global limit on\nthe length of a commitdiff; if we exceed that, the whole diff is\ntruncated and the files not shown are listed.\n\nThe CSS change improves performance by not using descendant selectors\nfor all these table cells. Instead, we assign them precise classes and\njust use that in the CSS.\n\nThe line number generation thing using data attributes and a :before\nselector in the CSS, which enables text selections only in the code\ncolumn, is not strictly XHTML 1.0. (Data attributes are a feature of\nHTML 5.) However, reasonably modern browsers also handle this correctly\nif the page claims to be XHTML 1.0. Besides, the commitdiff page isn\u0027t\nXHTML compliant anyway; I don\u0027t think a pre-element may contain divs\nor even tables.\n\n(Note that this technique could be used on other diff pages, too. For\ninstance on the blame page.)",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "dd2a7807864045958db7bd485d321f33f2f56d09",
      "old_mode": 33188,
      "old_path": "src/main/java/com/gitblit/utils/DiffUtils.java",
      "new_id": "f597b946d555258580b58c0b384e8a1d1f10d979",
      "new_mode": 33188,
      "new_path": "src/main/java/com/gitblit/utils/DiffUtils.java"
    },
    {
      "type": "modify",
      "old_id": "47ff143a85595d82a85dbab8274591faa28aa22a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/gitblit/utils/GitBlitDiffFormatter.java",
      "new_id": "0b16c3748d2723b4c2bbf7f14fc33d4072471ae8",
      "new_mode": 33188,
      "new_path": "src/main/java/com/gitblit/utils/GitBlitDiffFormatter.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3a2553f496b32dcef2fcf72dd67fe1156a94b646",
      "new_mode": 33188,
      "new_path": "src/main/java/com/gitblit/utils/ResettableByteArrayOutputStream.java"
    },
    {
      "type": "modify",
      "old_id": "ce7b52290ad5d101b63240a48330e4c8ff43290a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/gitblit/wicket/GitBlitWebApp.properties",
      "new_id": "cfec39e5fc6ec60e2ed7140b0cda543b0df5ab5e",
      "new_mode": 33188,
      "new_path": "src/main/java/com/gitblit/wicket/GitBlitWebApp.properties"
    },
    {
      "type": "modify",
      "old_id": "3ec330b7e6ab051f34cf82a33331b5e9c500e087",
      "old_mode": 33188,
      "old_path": "src/main/java/com/gitblit/wicket/GitBlitWebApp_de.properties",
      "new_id": "da437c7fd291b3fd8964e0582f7c577f051bb9bd",
      "new_mode": 33188,
      "new_path": "src/main/java/com/gitblit/wicket/GitBlitWebApp_de.properties"
    },
    {
      "type": "modify",
      "old_id": "b888beee86e1edbb12fe03b4410138a5d41e229f",
      "old_mode": 33188,
      "old_path": "src/main/java/com/gitblit/wicket/GitBlitWebApp_fr.properties",
      "new_id": "67855a0e3c46e928a6138681f5e71938f9184c6d",
      "new_mode": 33188,
      "new_path": "src/main/java/com/gitblit/wicket/GitBlitWebApp_fr.properties"
    },
    {
      "type": "modify",
      "old_id": "2484b0cbc099607d15d29b6af1fd2b47cbc11b15",
      "old_mode": 33188,
      "old_path": "src/main/resources/gitblit.css",
      "new_id": "43b1be8661a4496fb98f9c406ffea7d262d64181",
      "new_mode": 33188,
      "new_path": "src/main/resources/gitblit.css"
    }
  ]
}
