)]}'
{
  "commit": "75c671c7d65db43f197b55419a8519906a611730",
  "tree": "6cc0789eb93f48d6f65750cce2c504421a5a1451",
  "parents": [
    "1acfd4f79afe2c949f6285cfd7a9c1ef77d536a9"
  ],
  "author": {
    "name": "Sigurd Meldgaard",
    "email": "sigurdm@google.com",
    "time": "Wed Nov 23 13:41:13 2022 +0100"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Nov 23 13:41:13 2022 +0100"
  },
  "message": "Allow adding from multiple sources (#3571)\n\nAnd having some packages be dev_dependencies while others are not.\r\nBy having:\r\n\r\neach package carry its own (yaml-formatted) descriptor as it would be written in pubspec.yaml.\r\ndev: be a prefix to the package instead of a top-level argument.\r\nThis allows eg.:\r\n\r\ndart pub add foo:^1.2.3  \u0027dev:bar:{\"git\":\"../bar.git\"}\r\nThis is a more full resolution to #3273 than #3324 but implemented in a backwards compatible way (the old arguments still work as long as they are not combined with descriptors (other than bare constraints)).\r\n\r\nIf a constraint is not given explicitly, either as foo:^1.2.3 or foo:{\u003csource\u003e:\u003cdescriptor\u003e,\"version\":\"\u003cconstraint\"} the \"best\" constraint is inferred and inserted as before (instead of being interpreted as \u0027any\u0027 as it would in a pubspec.yaml).",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "15b64a40828d999dd1c4235e9fdefce3d61bd727",
      "old_mode": 33188,
      "old_path": "lib/src/command/add.dart",
      "new_id": "844f389e6e61f0d5c676c96366e131f2e0af26f8",
      "new_mode": 33188,
      "new_path": "lib/src/command/add.dart"
    },
    {
      "type": "modify",
      "old_id": "25f9d8dc11b51ba4c79f1078f1b3e47f01c0500e",
      "old_mode": 33188,
      "old_path": "test/add/common/add_test.dart",
      "new_id": "87ac53bb6cec2fde62779d861c2e0bb66f39b2ef",
      "new_mode": 33188,
      "new_path": "test/add/common/add_test.dart"
    },
    {
      "type": "modify",
      "old_id": "d976172c20c8fade46fb10cb79b64e1a16cd4bd9",
      "old_mode": 33188,
      "old_path": "test/add/git/git_test.dart",
      "new_id": "98908356c157ea62e101aaa6ccb97e6d820a561c",
      "new_mode": 33188,
      "new_path": "test/add/git/git_test.dart"
    },
    {
      "type": "modify",
      "old_id": "5e6367956a72d75dddcbf09e5d25b351e4f798af",
      "old_mode": 33188,
      "old_path": "test/add/path/absolute_path_test.dart",
      "new_id": "afdc3f7d63fb79ee6b589c9f3cb83fc7b3ed4762",
      "new_mode": 33188,
      "new_path": "test/add/path/absolute_path_test.dart"
    },
    {
      "type": "modify",
      "old_id": "e08ba3cc9f4550853e3a7aae69ead1f25313b9e8",
      "old_mode": 33188,
      "old_path": "test/add/path/relative_path_test.dart",
      "new_id": "a25e557da00d608086d8b3be51cffc8636c36834",
      "new_mode": 33188,
      "new_path": "test/add/path/relative_path_test.dart"
    },
    {
      "type": "modify",
      "old_id": "a932b6b6920f9b7f433d7dc1cb494e628f6da97e",
      "old_mode": 33188,
      "old_path": "test/test_pub.dart",
      "new_id": "57dc3a0f44384aa4ef45f50a672d5a6e98e73a58",
      "new_mode": 33188,
      "new_path": "test/test_pub.dart"
    },
    {
      "type": "modify",
      "old_id": "13647a0a17cc1a24aeeaa621e587962b04466858",
      "old_mode": 33188,
      "old_path": "test/testdata/goldens/embedding/embedding_test/--help.txt",
      "new_id": "780b29eca6d4bed32569db67f5ea6ee781f5c44e",
      "new_mode": 33188,
      "new_path": "test/testdata/goldens/embedding/embedding_test/--help.txt"
    },
    {
      "type": "modify",
      "old_id": "2a37c217472ed04de78feeec11580c92801ee3c9",
      "old_mode": 33188,
      "old_path": "test/testdata/goldens/help_test/pub add --help.txt",
      "new_id": "9aa40168cc53162590d4813323eb28da94ddd45c",
      "new_mode": 33188,
      "new_path": "test/testdata/goldens/help_test/pub add --help.txt"
    }
  ]
}
