)]}'
{
  "commit": "e0d7a540e3c615c628f63fcaaaba0c47fca2cb25",
  "tree": "a1e5db9dcc26fdaa8524531d318bca49e1daffbf",
  "parents": [
    "50b4e8f62b57f2d13acc9b3538525a231dba704e"
  ],
  "author": {
    "name": "Laszlo Csomor",
    "email": "laszlocsomor@google.com",
    "time": "Mon Oct 17 14:56:30 2016 +0000"
  },
  "committer": {
    "name": "Philipp Wollermann",
    "email": "philwo@google.com",
    "time": "Tue Oct 18 10:55:49 2016 +0000"
  },
  "message": "VFS: implement a Windows-specific Path subclass\n\nThe new subclass WindowsFileSystem.WindowsPath is\naware of Windows drives.\n\nThis change:\n- introduces a new factory for Path objects so\n  FileSystems can return a custom implementation\n  that instantiates filesystem-specific Paths\n- implements the WindowsPath subclass of Path that\n  is aware of Windows drives\n- introduces the bazel.windows_unix_root JVM\n  argument that defines the MSYS root, which\n  defines the absolute Windows path that is the\n  root of all Unix paths that Bazel creates (e.g.\n  \"/usr/lib\" -\u003e \"C:/tools/msys64/usr/lib\") except\n  if the path is of the form \"/c/foo\" which is\n  treated as \"C:/foo\"\n- removes all Windows-specific logic from Path\n\nPathFragment is still aware of drive letters and\nit has to remain so because it is unaware of file\nsystems.\n\nWindowsPath restricts the allowed path strings to\nabsolute Unix paths where the first segment, if\nany, is a volume specifier. From now on if Bazel\nattempts to create a WindowsPath from an absolute\nUnix path, Bazel will make it relative to\nWindowsPath.UNIX_ROOT, unless the first component\nis a single-letter name (e.g. \"/c/foo\" which is\n\"C:/foo\").\n\nSubclassing Path is necessary because a Unix-style\nabsolute path doesn\u0027t sufficiently define a full\nWindows path, as it may be relative to any drive.\n\nFixes https://github.com/bazelbuild/bazel/issues/1463\n\n--\nMOS_MIGRATED_REVID\u003d136350304\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e7f1fa2513c14c6a116cff48cccef09c2f5c3674",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/vfs/FileSystem.java",
      "new_id": "768792a38b3221b5ac2b2d12794c89c99ca283b5",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/vfs/FileSystem.java"
    },
    {
      "type": "modify",
      "old_id": "dbec227a2236c481dcb6e730e433630207c82cfa",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/vfs/Path.java",
      "new_id": "be95e3bc6edcb3fae893e117f1ad6dbd916b33f3",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/vfs/Path.java"
    },
    {
      "type": "modify",
      "old_id": "9fd130e3d84a99f68c2c1686b66115dad44e859d",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java",
      "new_id": "2980e2941deb13379665862abef7ebbad4115ea5",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java"
    },
    {
      "type": "modify",
      "old_id": "a9825959a8caa905f73888a99716662062bd4304",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/vfs/RootedPath.java",
      "new_id": "23e7ad79ed259ff8c7ffec85af6ff6938944fd26",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/vfs/RootedPath.java"
    },
    {
      "type": "modify",
      "old_id": "da0473583132cf069deb51eccf4fd2e45effc420",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/vfs/WindowsFileSystem.java",
      "new_id": "bc9a10d414b130dd4a706910498ef516f6b8984c",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/vfs/WindowsFileSystem.java"
    },
    {
      "type": "modify",
      "old_id": "4830d8fe19e1b2e188c4e9c1f384204e44ec0af6",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/vfs/ZipFileSystem.java",
      "new_id": "892fecb10b49e8c4822aefc1cf18329d93936ee6",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/vfs/ZipFileSystem.java"
    },
    {
      "type": "modify",
      "old_id": "942d9a337df49ffcf953562445a42794bf8e33f5",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/BUILD",
      "new_id": "0556e41c5ad59207c490d24fa576b825574842be",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/BUILD"
    },
    {
      "type": "modify",
      "old_id": "ac34ec035a347df6f37a8a5639beb86106815339",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/vfs/PathFragmentTest.java",
      "new_id": "71b7decf9e67b921eef708591676451825996141",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/vfs/PathFragmentTest.java"
    },
    {
      "type": "modify",
      "old_id": "48a63e34dc035ae2f9ecdba90836e8bf253c4097",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/vfs/PathFragmentWindowsTest.java",
      "new_id": "df2c770d98333ff797c92d3236aba083ba94b55e",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/vfs/PathFragmentWindowsTest.java"
    },
    {
      "type": "modify",
      "old_id": "cb8b23b000b6b89ea31452587519913f6905ba83",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/vfs/PathWindowsTest.java",
      "new_id": "864a483536ca5576fc81293c7ee428b332bdd189",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/vfs/PathWindowsTest.java"
    },
    {
      "type": "modify",
      "old_id": "2be505548a32e58098506112a71159a3d8068bf5",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/vfs/UnixPathTest.java",
      "new_id": "e2317bf0f14cdd28399cc15e475f97df416f7cae",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/vfs/UnixPathTest.java"
    }
  ]
}
