summaryrefslogtreecommitdiffstats
path: root/subcmds/sync.py
diff options
context:
space:
mode:
Diffstat (limited to 'subcmds/sync.py')
-rw-r--r--subcmds/sync.py19
1 files changed, 18 insertions, 1 deletions
diff --git a/subcmds/sync.py b/subcmds/sync.py
index ceb81eaa..d89c2b8c 100644
--- a/subcmds/sync.py
+++ b/subcmds/sync.py
@@ -117,6 +117,8 @@ later is required to fix a server side protocol bug.
117 print >>sys.stderr, 'error: Cannot fetch %s' % project.name 117 print >>sys.stderr, 'error: Cannot fetch %s' % project.name
118 sys.exit(1) 118 sys.exit(1)
119 pm.end() 119 pm.end()
120 for project in projects:
121 project.bare_git.gc('--auto')
120 return fetched 122 return fetched
121 123
122 def UpdateProjectList(self): 124 def UpdateProjectList(self):
@@ -215,7 +217,14 @@ uncommitted changes are present' % project.relpath
215 # bail out now; the rest touches the working tree 217 # bail out now; the rest touches the working tree
216 return 218 return
217 219
218 self.manifest._Unload() 220 if mp.HasChanges:
221 syncbuf = SyncBuffer(mp.config)
222 mp.Sync_LocalHalf(syncbuf)
223 if not syncbuf.Finish():
224 sys.exit(1)
225 _ReloadManifest(self)
226 mp = self.manifest.manifestProject
227
219 all = self.GetProjects(args, missing_ok=True) 228 all = self.GetProjects(args, missing_ok=True)
220 missing = [] 229 missing = []
221 for project in all: 230 for project in all:
@@ -242,6 +251,14 @@ uncommitted changes are present' % project.relpath
242 if not syncbuf.Finish(): 251 if not syncbuf.Finish():
243 sys.exit(1) 252 sys.exit(1)
244 253
254def _ReloadManifest(cmd):
255 old = cmd.manifest
256 new = cmd.GetManifest(reparse=True)
257
258 if old.__class__ != new.__class__:
259 print >>sys.stderr, 'NOTICE: manifest format has changed ***'
260 new.Upgrade_Local(old)
261
245def _PostRepoUpgrade(manifest): 262def _PostRepoUpgrade(manifest):
246 for project in manifest.projects.values(): 263 for project in manifest.projects.values():
247 if project.Exists: 264 if project.Exists: