diff --git a/subcmds/init.py b/subcmds/init.py
index 53c3a01..b5207fb 100644
--- a/subcmds/init.py
+++ b/subcmds/init.py
@@ -22,6 +22,7 @@
 from project import SyncBuffer
 from git_command import git_require, MIN_GIT_VERSION
 from manifest_xml import XmlManifest
+from subcmds.sync import _ReloadManifest
 
 class Init(InteractiveCommand, MirrorSafeCommand):
   common = True
@@ -143,9 +144,17 @@
       print >>sys.stderr, 'fatal: cannot obtain manifest %s' % r.url
       sys.exit(1)
 
+    if not is_new:
+      # Force the manifest to load if it exists, the old graph
+      # may be needed inside of _ReloadManifest().
+      #
+      self.manifest.projects
+
     syncbuf = SyncBuffer(m.config)
     m.Sync_LocalHalf(syncbuf)
     syncbuf.Finish()
+    _ReloadManifest(self)
+    self._ApplyOptions(opt, is_new)
 
     if not self.manifest.InitBranch():
       print >>sys.stderr, 'fatal: cannot create branch in manifest'
diff --git a/subcmds/sync.py b/subcmds/sync.py
index 1537c9a..5fc834d 100644
--- a/subcmds/sync.py
+++ b/subcmds/sync.py
@@ -215,8 +215,9 @@
         mp.Sync_LocalHalf(syncbuf)
         if not syncbuf.Finish():
           sys.exit(1)
+        _ReloadManifest(self)
+        mp = self.manifest.manifestProject
 
-        self.GetManifest(reparse=True)
         all = self.GetProjects(args, missing_ok=True)
         missing = []
         for project in all:
@@ -243,6 +244,13 @@
     if not syncbuf.Finish():
       sys.exit(1)
 
+def _ReloadManifest(cmd):
+  old = cmd.manifest
+  new = cmd.GetManifest(reparse=True)
+
+  if old.__class__ != new.__class__:
+    print >>sys.stderr, 'NOTICE: manifest format has changed  ***'
+    new.Upgrade_Local(old)
 
 def _PostRepoUpgrade(manifest):
   for project in manifest.projects.values():
