Don't permit "repo init --mirror" in an existing client
Simply setting repo.mirror true doesn't make a client into a mirror.
The on-disk layout is completely wrong for a mirror repository,
and until we fix our layout for a non-mirror client to more closely
resemble the upstream we can't do anything to easily turn on or
turn off the mirror status flag.
Signed-off-by: Shawn O. Pearce <sop@google.com>
diff --git a/subcmds/init.py b/subcmds/init.py
index d1fb431..4f99430 100644
--- a/subcmds/init.py
+++ b/subcmds/init.py
@@ -89,8 +89,9 @@
def _SyncManifest(self, opt):
m = self.manifest.manifestProject
+ is_new = not m.Exists
- if not m.Exists:
+ if is_new:
if not opt.manifest_url:
print >>sys.stderr, 'fatal: manifest url (-u) is required.'
sys.exit(1)
@@ -117,7 +118,11 @@
r.Save()
if opt.mirror:
- m.config.SetString('repo.mirror', 'true')
+ if is_new:
+ m.config.SetString('repo.mirror', 'true')
+ else:
+ print >>sys.stderr, 'fatal: --mirror not supported on existing client'
+ sys.exit(1)
m.Sync_NetworkHalf()
m.Sync_LocalHalf()