)]}'
{
  "commit": "179227d6e212373019f6a05ee235b3d4e7e2982e",
  "tree": "02c036c5022846f28364b43cdfaacd76b293c710",
  "parents": [
    "a8b5355d808ba7f13af94e4446dab980c39b054d"
  ],
  "author": {
    "name": "Johannes Schindelin",
    "email": "johannes.schindelin@gmx.de",
    "time": "Mon Sep 21 22:28:16 2020 +0000"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Mon Sep 21 15:47:54 2020 -0700"
  },
  "message": "Optionally skip linking/copying the built-ins\n\nFor a long time already, the non-dashed form of the built-ins is the\nrecommended way to write scripts, i.e. it is better to call `git merge\n[...]` than to call `git-merge [...]`.\n\nWhile Git still supports the dashed form (by hard-linking the `git`\nexecutable to the dashed name in `libexec/git-core/`), in practice, it\nis probably almost irrelevant.\n\nHowever, we *do* care about keeping people\u0027s scripts working (even if\nthey were written before the non-dashed form started to be recommended).\n\nKeeping this backwards-compatibility is not necessarily cheap, though:\neven so much as amending the tip commit in a git.git checkout will\nrequire re-linking all of those dashed commands. On this developer\u0027s\nlaptop, this makes a noticeable difference:\n\n\t$ touch version.c \u0026\u0026 time make\n\t    CC version.o\n\t    AR libgit.a\n\t    LINK git-bugreport.exe\n\t    [... 11 similar lines ...]\n\t    LN/CP git-remote-https.exe\n\t    LN/CP git-remote-ftp.exe\n\t    LN/CP git-remote-ftps.exe\n\t    LINK git.exe\n\t    BUILTIN git-add.exe\n\t    [... 123 similar lines ...]\n\t    BUILTIN all\n\t    SUBDIR git-gui\n\t    SUBDIR gitk-git\n\t    SUBDIR templates\n\t    LINK t/helper/test-fake-ssh.exe\n\t    LINK t/helper/test-line-buffer.exe\n\t    LINK t/helper/test-svn-fe.exe\n\t    LINK t/helper/test-tool.exe\n\n\treal    0m36.633s\n\tuser    0m3.794s\n\tsys     0m14.141s\n\n\t$ touch version.c \u0026\u0026 time make SKIP_DASHED_BUILT_INS\u003d1\n\t    CC version.o\n\t    AR libgit.a\n\t    LINK git-bugreport.exe\n\t    [... 11 similar lines ...]\n\t    LN/CP git-remote-https.exe\n\t    LN/CP git-remote-ftp.exe\n\t    LN/CP git-remote-ftps.exe\n\t    LINK git.exe\n\t    BUILTIN git-receive-pack.exe\n\t    BUILTIN git-upload-archive.exe\n\t    BUILTIN git-upload-pack.exe\n\t    BUILTIN all\n\t    SUBDIR git-gui\n\t    SUBDIR gitk-git\n\t    SUBDIR templates\n\t    LINK t/helper/test-fake-ssh.exe\n\t    LINK t/helper/test-line-buffer.exe\n\t    LINK t/helper/test-svn-fe.exe\n\t    LINK t/helper/test-tool.exe\n\n\treal    0m23.717s\n\tuser    0m1.562s\n\tsys     0m5.210s\n\nAlso, `.zip` files do not have any standardized support for hard-links,\ntherefore \"zipping up\" the executables will result in inflated disk\nusage. (To keep down the size of the \"MinGit\" variant of Git for\nWindows, which is distributed as a `.zip` file, the hard-links are\nexcluded specifically.)\n\nIn addition to that, some programs that are regularly used to assess\ndisk usage fail to realize that those are hard-links, and heavily\novercount disk usage. Most notably, this was the case with Windows\nExplorer up until the last couple of Windows 10 versions. See e.g.\nhttps://github.com/msysgit/msysgit/issues/58.\n\nTo save on the time needed to hard-link these dashed commands, with the\nplan to eventually stop shipping with those hard-links on Windows, let\u0027s\nintroduce a Makefile knob to skip generating them.\n\nSigned-off-by: Johannes Schindelin \u003cjohannes.schindelin@gmx.de\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ce072c4fb81121d88b419143bf9e2e24c277c7c1",
      "old_mode": 33188,
      "old_path": "Makefile",
      "new_id": "6931ecd45e40c32ec122859d6e925081004c812a",
      "new_mode": 33188,
      "new_path": "Makefile"
    }
  ]
}
