)]}'
{
  "commit": "f9fe3e14d2b56140c90a8969892e06aa71127305",
  "tree": "5065ff8c40f8a7c8cf4574dd7afa6f573e76ca53",
  "parents": [
    "bdb866ea7630b1aecad0ddc7d72939e67ff39816"
  ],
  "author": {
    "name": "Mark E. Hamilton",
    "email": "mhamilt@sandia.gov",
    "time": "Tue Feb 23 18:10:42 2016 -0700"
  },
  "committer": {
    "name": "David Pursehouse",
    "email": "david.pursehouse@sonymobile.com",
    "time": "Fri Apr 08 00:07:52 2016 +0000"
  },
  "message": "repo: Repo does not always handle \u0027.\u0027 parameter correctly\n\nThe repo script allows a manifest to specify a \u0027.\u0027 as the path the\ntop-level directory, which co-locates the .git and .repo directories,\nand places files from the git repository at the top-level:\n\n  \u003cproject name\u003d\"proj_name\" path\u003d\".\" /\u003e\n  \u003cproject name\u003d\"sierra.other.git\" path\u003d\"other\" /\u003e\n\nMost commands work correctly with this setup. Some commands, however,\nfail to find the project. For instance, \u0027repo sync\u0027 works, and \u0027repo sync .\u0027\nworks in a sub-project (\u0027other\u0027 in this case) but \u0027repo sync .\u0027 in the\ntop-level directory fails with the error:\n\nerror: project . not found\n\nThere are two reasons for this:\n\n1. The self.worktree attribute of the Project object is not normalized,\nso with a \u0027.\u0027 for path its value would be \u0027/my/project/root/.\u0027. This is\nfine when used as a path, since it\u0027s the same path as \u0027/my/project/root\u0027,\nbut when used in a string comparison it fails. This commit applies\nos.path.normpath() to that value before storing it.\n\n2. The _GetProjectByPath method in command.py was not checking the path\nagainst manifest.topdir, so even once it was normalized the project was\nnot found. This commit adds a check against manifest.topdir if the\nloop drops out without finding a project.\n\nChange-Id: Ic84d053f1bbb5a357cad566805d5a326ae8246d2\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "bc2f950107ffa1c63f56c1b5452f2167e763a0f4",
      "old_mode": 33188,
      "old_path": "command.py",
      "new_id": "2ff0a3447e7388acb7448b99c2e46645b95daf4f",
      "new_mode": 33188,
      "new_path": "command.py"
    },
    {
      "type": "modify",
      "old_id": "e0bd9c10ff66706b01e539aae9e48d62578bdf07",
      "old_mode": 33188,
      "old_path": "project.py",
      "new_id": "4a601f87750a6bdffe47d0ada662a901ad2a45b7",
      "new_mode": 33188,
      "new_path": "project.py"
    }
  ]
}
