All of these directories are subtrees and may not be contributed to by pushing directly to the openbmc/openbmc top level repository
Subtrees are a way to nest repositories inside another as a sub-directory. This allows us to contain all of the Yocto meta-data in individual repositories (useful for developers who don't want the phosphor-distro), as well as one top level directory - making it easy to get started.
To find a list of all current subtrees in the openbmc project, navigate to: https://github.com/openbmc?utf8=✓&q=meta
Instead, please follow this workflow:
$ git clone https://gerrit.openbmc-project.xyz/openbmc/openbmc
# Make changes
$ bitbake obmc-phosphor-image # Test out your changes
$ git commit
$ git remote add <repo_name> ssh://openbmc.gerrit/openbmc/<repo_name>/
$ git fetch <repo_name>
$ git checkout -b featureBranch <repo_name>/master
$ git cherry-pick --strategy=subtree <SHA> # My commit from master
$ git push ssh://openbmc.gerrit/openbmc/<repo_name> HEAD:refs/for/master
$ git checkout master # To continue work on something unrelated
If you have lost the commit from the parent repo and need to do work on your subtree code review:
$ git checkout featureBranch
$ git log -n1 --oneline # capture the SHA
$ git checkout master
$ git cherry-pick --strategy=subtree <SHA you just captured>
If for some reason you have lost the featureBranch:
$ git checkout -b featureBranch
$ git fetch ssh://openbmc.gerrit/openbmc/<repo_name> refs/changes/XX/XXXX/X
$ git checkout FETCH_HEAD
$ git log -n1 --oneline # Capture the SHA
$ git checkout master
$ git cherry-pick --strategy=subtree <SHA you just captured>
Where $1 is the repo name, and $2 is a ref to a pointer
git clone https://gerrit.openbmc-project.xyz/openbmc/openbmc
cd openbmc
git remote add subtree-remote https://gerrit.openbmc-project.xyz/openbmc/$1
git fetch ssh://openbmc.gerrit/openbmc/$1 refs/changes/$2
git cherry-pick --strategy=subtree FETCH_HEAD
Once +2 is given, this script will run where $1 is the repo name, and $2 is a full path to subtree from top level
git clone ssh://<user>@gerrit.openbmc-project.xyz:29418/openbmc/openbmc
cd openbmc
git remote add subtree-remote https://gerrit.openbmc-project.xyz/openbmc/$1
git subtree pull --prefix=$2 subtree-remote master
git push
To keep yourself up to date with the latest as changes are submitted, you can simply rebase again the openbmc master, and you will automatically get the changes made in the sub-directories.
git checkout master
git pull --rebase origin master