)]}'
{
  "commit": "a086f921a725319a6f0c2c3aacf676c890b3ce3e",
  "tree": "2395d61712e499e34f80450175dd0d24fc52ff8d",
  "parents": [
    "ee92ab992fada00ca945bddce5c281ca0927747c"
  ],
  "author": {
    "name": "Brandon Williams",
    "email": "bmwill@google.com",
    "time": "Fri Mar 17 15:38:01 2017 -0700"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Sat Mar 18 09:51:23 2017 -0700"
  },
  "message": "submodule: decouple url and submodule interest\n\nCurrently the submodule.\u003cname\u003e.url config option is used to determine if\na given submodule is of interest to the user.  This ends up being\ncumbersome in a world where we want to have different submodules checked\nout in different worktrees or a more generalized mechanism to select\nwhich submodules are of interest.\n\nIn a future with worktree support for submodules, there will be multiple\nworking trees, each of which may only need a subset of the submodules\nchecked out.  The URL (which is where the submodule repository can be\nobtained) should not differ between different working trees.\n\nIt may also be convenient for users to more easily specify groups of\nsubmodules they are interested in as opposed to running \"git submodule\ninit \u003cpath\u003e\" on each submodule they want checked out in their working\ntree.\n\nTo this end two config options are introduced, submodule.active and\nsubmodule.\u003cname\u003e.active.  The submodule.active config holds a pathspec\nthat specifies which submodules should exist in the working tree.  The\nsubmodule.\u003cname\u003e.active config is a boolean flag used to indicate if\nthat particular submodule should exist in the working tree.\n\nIts important to note that submodule.active functions differently than\nthe other configuration options since it takes a pathspec.  This allows\nusers to adopt at least two new workflows:\n\n  1. Submodules can be grouped with a leading directory, such that a\n     pathspec e.g. \u0027lib/\u0027 would cover all library-ish modules to allow\n     those who are interested in library-ish modules to set\n     \"submodule.active \u003d lib/\" just once to say any and all modules in\n     \u0027lib/\u0027 are interesting.\n\n  2. Once the pathspec-attribute feature is invented, users can label\n     submodules with attributes to group them, so that a broad pathspec\n     with attribute requirements, e.g. \u0027:(attr:lib)\u0027, can be used to say\n     any and all modules with the \u0027lib\u0027 attribute are interesting.\n     Since the .gitattributes file, just like the .gitmodules file, is\n     tracked by the superproject, when a submodule moves in the\n     superproject tree, the project can adjust which path gets the\n     attribute in .gitattributes, just like it can adjust which path has\n     the submodule in .gitmodules.\n\nNeither of these two additional configuration options solve the problem\nof wanting different submodules checked out in different worktrees\nbecause multiple worktrees share .git/config.  Only once per-worktree\nconfigurations become a reality can this be solved, but this is a\nnecessary preparatory step for that future.\n\nGiven these multiple ways to check if a submodule is of interest, the\nmore fine-grained submodule.\u003cname\u003e.active option has the highest order\nof precedence followed by the pathspec check against submodule.active.\nTo ensure backwards compatibility, if neither of these options are set,\ngit falls back to checking the submodule.\u003cname\u003e.url option to determine\nif a submodule is interesting.\n\nSigned-off-by: Brandon Williams \u003cbmwill@google.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5e5c2ae5fb378dc3226e58a4a0df7c3c63472f60",
      "old_mode": 33188,
      "old_path": "Documentation/config.txt",
      "new_id": "d2d79b9d4fef1b8c3c9207efdba4175656878164",
      "new_mode": 33188,
      "new_path": "Documentation/config.txt"
    },
    {
      "type": "modify",
      "old_id": "0a2831d846d27e694ada4bc557a7d54a8bf2d8df",
      "old_mode": 33188,
      "old_path": "submodule.c",
      "new_id": "ad2779ee76c80ddc534f5d2982605dc54e474e2a",
      "new_mode": 33188,
      "new_path": "submodule.c"
    },
    {
      "type": "modify",
      "old_id": "f18e0c9253390db8e623476c78928f948cb6c9a1",
      "old_mode": 33261,
      "old_path": "t/t7413-submodule-is-active.sh",
      "new_id": "ea1644b58056931f041f40ededbb78563d5b8fda",
      "new_mode": 33261,
      "new_path": "t/t7413-submodule-is-active.sh"
    }
  ]
}
