diff --git a/jeepyb/cmd/create_cgitrepos.py b/jeepyb/cmd/create_cgitrepos.py
index 3fc4f19..07a9eb9 100644
--- a/jeepyb/cmd/create_cgitrepos.py
+++ b/jeepyb/cmd/create_cgitrepos.py
@@ -31,6 +31,9 @@
                             '/etc/cgitrepos')
 REPO_PATH = os.environ.get('REPO_PATH',
                            '/var/lib/git')
+SCRATCH_SUBPATH = os.environ.get('SCRATCH_SUBPATH')
+SCRATCH_OWNER = os.environ.get('SCRATCH_OWNER', 'scratch')
+SCRATCH_GROUP = os.environ.get('SCRATCH_GROUP', 'scratch')
 CGIT_USER = os.environ.get('CGIT_USER', 'cgit')
 CGIT_GROUP = os.environ.get('CGIT_GROUP', 'cgit')
 
@@ -45,6 +48,20 @@
         assert name not in names
         names.add(name)
         gitorgs.setdefault(org, []).append((name, description))
+    if SCRATCH_SUBPATH:
+        assert SCRATCH_SUBPATH not in gitorgs
+        scratch_path = os.path.join('REPO_PATH', 'SCRATCH_SUBPATH')
+        for org in gitorgs:
+            scratch_dir = os.path.join(scratch_path, org)
+            if not os.path.isdir(scratch_dir):
+                os.makedirs(scratch_dir)
+            projects = gitorgs[org]
+            for (name, description) in projects:
+                scratch_repo = "%s.git" % os.path.join(scratch_dir, name)
+                subprocess.call(['git', 'init', '--bare', scratch_repo])
+                subprocess.call(['chown', '-R', '%s:%s'
+                                 % (SCRATCH_OWNER, SCRATCH_GROUP),
+                                 scratch_repo])
     for org in gitorgs:
         if not os.path.isdir('%s/%s' % (REPO_PATH, org)):
             os.makedirs('%s/%s' % (REPO_PATH, org))
