)]}'
{
  "commit": "094fb73adaa37a28e4d41396de4bfb5f300660a5",
  "tree": "9cedbd55f85957bc3b9c81890914a073ff31b1ec",
  "parents": [
    "ec6c613768e675d1e14d76a2fdcaa2e522add1c9"
  ],
  "author": {
    "name": "Carmi Grushko",
    "email": "carmi@google.com",
    "time": "Wed Feb 01 23:48:13 2017 +0000"
  },
  "committer": {
    "name": "Yun Peng",
    "email": "pcloudy@google.com",
    "time": "Thu Feb 02 10:13:47 2017 +0000"
  },
  "message": "proto_library: saner descriptor sets\n1. proto_library exposes a direct descriptor set (built from its \u0027srcs\u0027) and a nested set of transitive descriptor (from all of its dependencies).\n2. Alias libraries (\u003dno \u0027srcs\u0027) produce empty files as their descriptor sets.\n3. The direct descriptor set depends on the transitive ones, ensuring that building a top-most proto validates all of its dependencies are also valid protos.\n4. The wire format of protos allows to concatenate the outputs to get a valid serialized proto that contains all of the descriptor sets in the proto tree.\n\nRELNOTES: proto_library: alias libraries produce empty files for descriptor sets.\n\n--\nPiperOrigin-RevId: 146300520\nMOS_MIGRATED_REVID\u003d146300520\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f5582236060a5ee0fa95ce05ac22f8800abcf99c",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteAction.java",
      "new_id": "c7aa4cb63346916e9d498038801d0e5612384bcf",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteAction.java"
    },
    {
      "type": "modify",
      "old_id": "26e9fd2218cd22c9d8df9454a68b33556651ff76",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibrary.java",
      "new_id": "2fc4fa61e851e941e8377e5b16e557a7389dd0a3",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibrary.java"
    },
    {
      "type": "modify",
      "old_id": "6fc37c66762da4b4b8d38fe6e747a625c5b21174",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCommon.java",
      "new_id": "9188ec73e1ba1c5a667805e2ea5468aaa7efa666",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCommon.java"
    },
    {
      "type": "modify",
      "old_id": "f6b515f912088b102ff1545af6ae4fd6c66dd455",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilder.java",
      "new_id": "060fa0894c5e075a21c281e1045e2870eb559da2",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilder.java"
    },
    {
      "type": "modify",
      "old_id": "5b5039b9dc9488946090f53efe0ce7859e89c7c1",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/proto/ProtoSourcesProvider.java",
      "new_id": "a7c8bac0ba12ba9b9ee447511d10dff325aeda84",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/proto/ProtoSourcesProvider.java"
    },
    {
      "type": "modify",
      "old_id": "445140d9db04262c3b197d1a138da2e924470718",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/BUILD",
      "new_id": "149d602c9d985fbf6eafecf736157191fb54d2dc",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/BUILD"
    },
    {
      "type": "modify",
      "old_id": "0fb67e468402c5cda4aa5ac5a02ae4bfc75fa296",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibraryTest.java",
      "new_id": "1133f24b8e0fb6f0a64d62f17241b07eb1caa536",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibraryTest.java"
    }
  ]
}
