)]}'
{
  "commit": "6e180cdcecbb3e828aa892925d7ef67abf81ad80",
  "tree": "a351bdda2ecb3ba6db58a56fe81daa1a24024590",
  "parents": [
    "718258e256b74622aa55f5ee0cb9cff4cce6bf9f"
  ],
  "author": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Tue Feb 24 23:11:29 2009 -0800"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Wed Feb 25 14:39:42 2009 -0800"
  },
  "message": "Make sure objects/pack exists before creating a new pack\n\nIn a repository created with git older than f49fb35 (git-init-db: create\n\"pack\" subdirectory under objects, 2005-06-27), objects/pack/ directory is\nnot created upon initialization.  It was Ok because subdirectories are\ncreated as needed inside directories init-db creates, and back then,\npackfiles were recent invention.\n\nAfter the said commit, new codepaths started relying on the presense of\nobjects/pack/ directory in the repository.  This was exacerbated with\n8b4eb6b (Do not perform cross-directory renames when creating packs,\n2008-09-22) that moved the location temporary pack files are created from\nobjects/ directory to objects/pack/ directory, because moving temporary to\nthe final location was done carefully with lazy leading directory creation.\n\nMany packfile related operations in such an old repository can fail\nmysteriously because of this.\n\nThis commit introduces two helper functions to make things work better.\n\n - odb_mkstemp() is a specialized version of mkstemp() to refactor the\n   code and teach it to create leading directories as needed;\n\n - odb_pack_keep() refactors the code to create a \".keep\" file while\n   create leading directories as needed.\n\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fb5e14d56e5b9fec0a054eb9708be41a59ac0f13",
      "old_mode": 33188,
      "old_path": "builtin-pack-objects.c",
      "new_id": "7518d536c3d7d827322d335ad87fe26f5853c550",
      "new_mode": 33188,
      "new_path": "builtin-pack-objects.c"
    },
    {
      "type": "modify",
      "old_id": "d58cca58e5fdbe0838e3622148d7b502affeaebf",
      "old_mode": 33188,
      "old_path": "fast-import.c",
      "new_id": "f0114948ec1a48b5fa8fa848c231e0c37c2e7426",
      "new_mode": 33188,
      "new_path": "fast-import.c"
    },
    {
      "type": "modify",
      "old_id": "cf89cdf4598b3796724a85aa707f740245155cdc",
      "old_mode": 33188,
      "old_path": "git-compat-util.h",
      "new_id": "758a8808628e1dfb8240ee2fb3f8e4e359cf07f0",
      "new_mode": 33188,
      "new_path": "git-compat-util.h"
    },
    {
      "type": "modify",
      "old_id": "c99a1a152c7ddbb63073461b86179f2be5bf9640",
      "old_mode": 33188,
      "old_path": "index-pack.c",
      "new_id": "745ac0bfa02aafc00b3379011259a6bfc5a47f7b",
      "new_mode": 33188,
      "new_path": "index-pack.c"
    },
    {
      "type": "modify",
      "old_id": "3621f1dd3258d9dcd63bf5a6738e5d54940ffbbb",
      "old_mode": 33188,
      "old_path": "pack-write.c",
      "new_id": "e82c02545794fd10d2a81863676005e14069ce21",
      "new_mode": 33188,
      "new_path": "pack-write.c"
    },
    {
      "type": "modify",
      "old_id": "2852a0326546f50f0cbefb4d5621c889b52f33c9",
      "old_mode": 33261,
      "old_path": "t/t5300-pack-object.sh",
      "new_id": "73d871c7133d8cc392bc4ccea93fed4f750b2edf",
      "new_mode": 33261,
      "new_path": "t/t5300-pack-object.sh"
    },
    {
      "type": "modify",
      "old_id": "93562f03eef21b26945d2d9bbdc96818f4de6567",
      "old_mode": 33188,
      "old_path": "wrapper.c",
      "new_id": "231a58f1a9581b2f7e150ffe4e2f908dca3e3e61",
      "new_mode": 33188,
      "new_path": "wrapper.c"
    }
  ]
}
