diff --git a/jeepyb/cmd/manage_projects.py b/jeepyb/cmd/manage_projects.py
index 23b121f..853dde2 100644
--- a/jeepyb/cmd/manage_projects.py
+++ b/jeepyb/cmd/manage_projects.py
@@ -132,7 +132,7 @@
         return False
     # Because the following fails if executed more than once you should only
     # run fetch_config once in each repo.
-    status = git_command(repo_path, "checkout -b config "
+    status = git_command(repo_path, "checkout -B config "
                          "remotes/gerrit-meta/config")
     if status != 0:
         log.error("Failed to checkout config for project: %s" % project)
@@ -356,6 +356,18 @@
             project_git = "%s.git" % project
             remote_url = "ssh://localhost:%s/%s" % (GERRIT_PORT, project)
 
+            # Create the project in Gerrit first, since it will fail
+            # spectacularly if its project directory or local replica
+            # already exist on disk
+            project_created = False
+            if project not in project_list:
+                try:
+                    gerrit.createProject(project)
+                    project_created = True
+                except Exception:
+                    log.exception(
+                        "Exception creating %s in Gerrit." % project)
+
             # Create the repo for the local git mirror
             git_mirror_path = os.path.join(LOCAL_GIT_DIR, project_git)
             if not os.path.exists(git_mirror_path):
@@ -371,7 +383,7 @@
                             remote_url=remote_url)
 
             # If we don't have a local copy already, get one
-            if not os.path.exists(repo_path):
+            if not os.path.exists(repo_path) or project_created:
                 if not os.path.exists(os.path.dirname(repo_path)):
                     os.makedirs(os.path.dirname(repo_path))
                 # Three choices
@@ -416,7 +428,7 @@
                     run_command("git init %s" % repo_path)
                     git_command(
                         repo_path,
-                        "remote add origin %(remote_url)" % git_opts)
+                        "remote add origin %(remote_url)s" % git_opts)
                     with open(os.path.join(repo_path,
                                            ".gitreview"),
                               'w') as gitreview:
@@ -469,10 +481,8 @@
                 create_github_project(defaults, options, project,
                                       description, homepage)
 
-            if project not in project_list:
+            if project_created:
                 try:
-                    gerrit.createProject(project)
-
                     git_command(repo_path,
                                 push_string % remote_url,
                                 env=ssh_env)
@@ -480,7 +490,7 @@
                                 "push --tags %s" % remote_url, env=ssh_env)
                 except Exception:
                     log.exception(
-                        "Exception creating %s in Gerrit." % project)
+                        "Error pushing %s to Gerrit." % project)
 
             # If we're configured to track upstream, make sure we have
             # upstream's refs, and then push them to the appropriate
@@ -513,7 +523,7 @@
                     # Branches on gerrit. Also, push all of the tags
                     git_command(
                         repo_path,
-                        "push origin +refs/heads/*:refs/heads/*",
+                        "push origin refs/heads/*:refs/heads/*",
                         env=ssh_env)
                     git_command(repo_path, 'push --tags', env=ssh_env)
                 except Exception:
@@ -551,6 +561,7 @@
                     log.exception(
                         "Exception processing ACLS for %s." % project)
                 finally:
+                    git_command(repo_path, 'reset --hard')
                     git_command(repo_path, 'checkout master')
                     git_command(repo_path, 'branch -D config')
 
diff --git a/jeepyb/projects.py b/jeepyb/projects.py
index 4e74b78..c1de885 100644
--- a/jeepyb/projects.py
+++ b/jeepyb/projects.py
@@ -144,6 +144,7 @@
         'openstack/python-quantumclient': 'python-neutronclient',
         'openstack/oslo-incubator': 'oslo',
         'openstack/tripleo-incubator': 'tripleo',
+        'openstack/django_openstack_auth': 'django-openstack-auth',
         'openstack-infra/askbot-theme': 'openstack-ci',
         'openstack-infra/config': 'openstack-ci',
         'openstack-infra/devstack-gate': 'openstack-ci',
