diff --git a/jeepyb/cmd/create_cgitrepos.py b/jeepyb/cmd/create_cgitrepos.py
index 722f014..96ab172 100644
--- a/jeepyb/cmd/create_cgitrepos.py
+++ b/jeepyb/cmd/create_cgitrepos.py
@@ -29,6 +29,7 @@
 PROJECTS_YAML = os.environ.get('PROJECTS_YAML', '/home/cgit/projects.yaml')
 CGIT_REPOS = os.environ.get('CGIT_REPOS', '/etc/cgitrepos')
 REPO_PATH = os.environ.get('REPO_PATH', '/var/lib/git')
+ALIAS_PATH = os.environ.get('REPO_PATH', '/var/lib/git-alias')
 SCRATCH_SUBPATH = os.environ.get('SCRATCH_SUBPATH')
 SCRATCH_OWNER = os.environ.get('SCRATCH_OWNER', 'scratch')
 SCRATCH_GROUP = os.environ.get('SCRATCH_GROUP', 'scratch')
@@ -40,7 +41,7 @@
 def clean_string(string):
     """Scrub out characters that with break cgit.
 
-    cgit can't handle newlines in many of it's fields, so strip them
+    cgit can't handle newlines in many of its fields, so strip them
     out.
 
     """
@@ -51,6 +52,8 @@
     registry = u.ProjectsRegistry(PROJECTS_YAML)
     gitorgs = {}
     names = set()
+    # site -> [(path, project, description)]
+    alias_sites = {}
     for entry in registry.configs_list:
         project = entry['project']
         if '/' in project:
@@ -64,6 +67,11 @@
         assert project not in names
         names.add(project)
         gitorgs.setdefault(org, []).append((name, description))
+        if 'cgit-alias' in entry:
+            alias_site = entry['cgit-alias']['site']
+            alias_path = entry['cgit-alias']['path']
+            alias_sites.setdefault(alias_site, []).append(
+                (alias_path, project, description))
     if SCRATCH_SUBPATH:
         assert SCRATCH_SUBPATH not in gitorgs
         scratch_path = os.path.join(REPO_PATH, SCRATCH_SUBPATH)
@@ -100,6 +108,29 @@
                     subprocess.call(['git', 'init', '--bare', project_repo])
                     subprocess.call(['chown', '-R', '%s:%s'
                                      % (CGIT_USER, CGIT_GROUP), project_repo])
+    for alias_site, aliases in alias_sites.items():
+        # Create all the symlinks for this alias site first
+        for (alias_path, project, description) in aliases:
+            alias_site_root = os.path.join(ALIAS_PATH, alias_site)
+            if not os.path.exists(alias_site_root):
+                os.makedirs(alias_site_root)
+            alias_link_path = os.path.join(alias_site_root, alias_path)
+            alias_link_path += '.git'
+            alias_repo_path = os.path.join(REPO_PATH, project)
+            alias_repo_path += '.git'
+            if not os.path.exists(alias_link_path):
+                os.symlink(alias_repo_path, alias_link_path)
+        # Then create the cgit repo config
+        cgit_path = CGIT_REPOS + '_' + alias_site
+        with open(cgit_path, 'w') as cgit_file:
+            cgit_file.write('# Autogenerated by create_cgitrepos.py\n')
+            for (alias_path, project, description) in aliases:
+                project_repo = "%s.git" % os.path.join(REPO_PATH, project)
+                cgit_file.write('\n')
+                cgit_file.write('repo.url=%s\n' % (alias_path,))
+                cgit_file.write('repo.path=%s/\n' % (project_repo,))
+                cgit_file.write(
+                    'repo.desc=%s\n' % (clean_string(description)))
 
 
 if __name__ == "__main__":
