It looks like the problems with the git backend are more than just in the site-init command. It looks like several places expect that git_dir_for_path and git_repo_for_path return absolute paths, while in the current implementation, it may not be the case. Here is an updated patch to fix this. This replaces the previous patch that I gave in this bug. It seems to work for me, but I haven't heavily tested it. --- libbe/git.py 2008-06-22 19:52:14.000000000 -0400 +++ /libbe/git.py 2008-06-23 22:39:17.000000000 -0400 @@ -102,11 +102,16 @@ """Find the root of the deepest repository containing path.""" # Assume that nothing funny is going on; in particular, that we aren't # dealing with a bare repo. - return os.path.dirname(git_dir_for_path(path)) + # "git rev-parse --show-cdup" gives the relative path to the top-level + # directory of the repository. We then join that to the requested path, + # and then use realpath to turn it into an absolute path and to get rid of + # ".." components. + return os.path.realpath(os.path.join(path,invoke_client("rev-parse", "--show-cdup", directory=path)[1].rstrip())) def git_dir_for_path(path): """Find the git-dir of the deepest repo containing path.""" - return invoke_client("rev-parse", "--git-dir", directory=path)[1].rstrip() + repo = git_repo_for_path(path) + return os.path.join(repo,invoke_client("rev-parse", "--git-dir", directory=repo)[1].rstrip()) def export(spec, bug_dir, revision_dir): """Check out commit 'spec' from the git repo containing bug_dir into