Yes, you only need one "repo" script in ~/bin. If you read through
that script, it basically searches for ".repo/repo/main.py" and then
runs that, which is where the main logic for repo really is. Each
checkout you have (mydroid, openmoko, beagle) has a unique copy of the
repo code under .repo/repo and that is what will run when you type
"repo sync" (or whatever).
Regarding the error in openmoko, it looks like the manifest is
pointing at a non-tree-ish object in the kernel project. Error in
their manifest? What type of object is that b09c? E.g. try:
cd ~/openmoko/kernel/
git cat-file -t b09cf8ef31b71ef84d210e028d4300473633b469
Each of the ports you downloaded are based on an XML configuration
file stored in the "default.xml" file of the git repository whose URL
you passed to "repo init -u" when you made the directory. You could
make a new custom file by cloning each of these repositories with
standard "git clone", picking one and editing it to mix in from the
others, commit that, and then use that repository's path as the
argument to "repo init -u". This is (mostly) what we recommend to a
vendor when they customize android, and why openmoko and beagleboard
both have their own configuration file.
Finally, "git init" does not understand how to make a .repo directory.
git != repo. repo depends upon git, and falls back to it for most of
its work, but repo is a layer built on top of git and is not something
that git knows how to work with.