)]}'
{
  "commit": "c4f2d80270f1ce947fcf7fb0a4e5f0afb3a7062d",
  "tree": "5928bf2f9d72ffc3eec0a5e08456e2574a4c2e31",
  "parents": [
    "bd16ab9454e624a26c53a0f3fb892e20fb1c36e6"
  ],
  "author": {
    "name": "twerth",
    "email": "twerth@google.com",
    "time": "Tue May 15 05:02:31 2018 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-piper@google.com",
    "time": "Tue May 15 05:03:50 2018 -0700"
  },
  "message": "Allow more characters in labels.\n\nPartly addresses #374.\n\nSpecifically allow !%^`\"\u0027\u0026;\u003c\u003e?[]{|} in target and package names. It\u0027s actually\nsimpler now to declare what we don\u0027t allow. In target names:\n0-31 (control characters)\n58 \u0027:\u0027 (colon)\n92 \u0027\\\u0027 (backslash)\n127 (delete)\n\nIn package names:\n0-31 (control characters)\n58 \u0027:\u0027 (colon)\n64 \u0027@\u0027 (at-sign)\n92 \u0027\\\u0027 (backslash)\n127 (delete)\n\n- \u0027\\\u0027 is a path segment separator on Windows, and allowing it can lead to\n  silent output file conflicts and - therefore - data corruption. We may be\n  able to allow it in the future, but I didn\u0027t want to make that call.\n- \u0027:\u0027 is a special character that Bazel interprets as the package name / target\n  name separator.\n- \u0027@\u0027 in package names can probably be allowed; at the beginning of a label it\n  indicates a workspace name, but not within a segment. We actually have some\n  tests that disallow it specifically, but those can probably just be deleted;\n  however, it does require a bit of investigation, so I decided to delay that\n  change.\n\nIt is possible that we don\u0027t correctly escape filenames in all cases. Also note\nthat the shell may require escaping for specific characters, and that Bazel\ntreats a single \u0027*\u0027 (star) target name specially when given on the command\nline.\n\nRELNOTES: Bazel now allows almost all 7-bit ASCII characters in labels.\nPiperOrigin-RevId: 196650651\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a2f419eb2303cbf7844fa1667f7e58defb04d692",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/cmdline/LabelValidator.java",
      "new_id": "633946c60fd736e5b3b4c7168c85437b2365026a",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/cmdline/LabelValidator.java"
    },
    {
      "type": "modify",
      "old_id": "a486ddbf004b695be5139c69013b2b082be78050",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/GlobCache.java",
      "new_id": "f9d885ded0ad8b7339566b73c88168ae8946f809",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/GlobCache.java"
    },
    {
      "type": "modify",
      "old_id": "7e34cc64e8fcc4e69b79bbb2831a07395d6cab10",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/cmdline/LabelTest.java",
      "new_id": "be61b9472a63090ff0a8b683555742df78c52628",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/cmdline/LabelTest.java"
    },
    {
      "type": "modify",
      "old_id": "2156ddf84d12b304fd0811d34e27cc6a2055609c",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/cmdline/LabelValidatorTest.java",
      "new_id": "fcb187f268ffc6c3d675c4adce551b90002f1354",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/cmdline/LabelValidatorTest.java"
    },
    {
      "type": "modify",
      "old_id": "012e120139a627d7d66e553d1fbc9b5c25a491ed",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/cmdline/TargetPatternTest.java",
      "new_id": "e33d1f37c374c0e6003907cc2f09c8df31d386b6",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/cmdline/TargetPatternTest.java"
    },
    {
      "type": "modify",
      "old_id": "57b7c59090ca36e38f09f75deaba768c06338102",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/packages/OutputFileTest.java",
      "new_id": "c422f77e2f0a479618a15585e896c707014a9d18",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/packages/OutputFileTest.java"
    },
    {
      "type": "modify",
      "old_id": "e4729d3516504c215dbd70b6ee9668d22da5d739",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java",
      "new_id": "ba07b6841ad3167648994bc72142d0442debd171",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java"
    },
    {
      "type": "modify",
      "old_id": "f6ec361cd6c16eebc55bd97a0474fc82a785e88d",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/pkgcache/TargetPatternEvaluatorTest.java",
      "new_id": "a7f81a23e0a4ae7b2b9e9d146d84b063f15f3a88",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/pkgcache/TargetPatternEvaluatorTest.java"
    },
    {
      "type": "modify",
      "old_id": "195d987fcad1cf9453ea34f351dd0920ad08a461",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java",
      "new_id": "4d6339922fd79c21e59f54aa5e41ef0f8674e27f",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java"
    }
  ]
}
