diff options
-rw-r--r-- | subcmds/forall.py | 13 | ||||
-rw-r--r-- | subcmds/sync.py | 21 |
2 files changed, 27 insertions, 7 deletions
diff --git a/subcmds/forall.py b/subcmds/forall.py index ebc8beca..b93cd6d0 100644 --- a/subcmds/forall.py +++ b/subcmds/forall.py | |||
@@ -151,11 +151,15 @@ without iterating through the remaining projects. | |||
151 | attributes that we need. | 151 | attributes that we need. |
152 | 152 | ||
153 | """ | 153 | """ |
154 | if not self.manifest.IsMirror: | ||
155 | lrev = project.GetRevisionId() | ||
156 | else: | ||
157 | lrev = None | ||
154 | return { | 158 | return { |
155 | 'name': project.name, | 159 | 'name': project.name, |
156 | 'relpath': project.relpath, | 160 | 'relpath': project.relpath, |
157 | 'remote_name': project.remote.name, | 161 | 'remote_name': project.remote.name, |
158 | 'lrev': project.GetRevisionId(), | 162 | 'lrev': lrev, |
159 | 'rrev': project.revisionExpr, | 163 | 'rrev': project.revisionExpr, |
160 | 'annotations': dict((a.name, a.value) for a in project.annotations), | 164 | 'annotations': dict((a.name, a.value) for a in project.annotations), |
161 | 'gitdir': project.gitdir, | 165 | 'gitdir': project.gitdir, |
@@ -201,6 +205,13 @@ without iterating through the remaining projects. | |||
201 | mirror = self.manifest.IsMirror | 205 | mirror = self.manifest.IsMirror |
202 | rc = 0 | 206 | rc = 0 |
203 | 207 | ||
208 | smart_sync_manifest_name = "smart_sync_override.xml" | ||
209 | smart_sync_manifest_path = os.path.join( | ||
210 | self.manifest.manifestProject.worktree, smart_sync_manifest_name) | ||
211 | |||
212 | if os.path.isfile(smart_sync_manifest_path): | ||
213 | self.manifest.Override(smart_sync_manifest_path) | ||
214 | |||
204 | if not opt.regex: | 215 | if not opt.regex: |
205 | projects = self.GetProjects(args) | 216 | projects = self.GetProjects(args) |
206 | else: | 217 | else: |
diff --git a/subcmds/sync.py b/subcmds/sync.py index b4546c15..ec333ae7 100644 --- a/subcmds/sync.py +++ b/subcmds/sync.py | |||
@@ -517,6 +517,9 @@ later is required to fix a server side protocol bug. | |||
517 | self.manifest.Override(opt.manifest_name) | 517 | self.manifest.Override(opt.manifest_name) |
518 | 518 | ||
519 | manifest_name = opt.manifest_name | 519 | manifest_name = opt.manifest_name |
520 | smart_sync_manifest_name = "smart_sync_override.xml" | ||
521 | smart_sync_manifest_path = os.path.join( | ||
522 | self.manifest.manifestProject.worktree, smart_sync_manifest_name) | ||
520 | 523 | ||
521 | if opt.smart_sync or opt.smart_tag: | 524 | if opt.smart_sync or opt.smart_tag: |
522 | if not self.manifest.manifest_server: | 525 | if not self.manifest.manifest_server: |
@@ -583,17 +586,16 @@ later is required to fix a server side protocol bug. | |||
583 | [success, manifest_str] = server.GetManifest(opt.smart_tag) | 586 | [success, manifest_str] = server.GetManifest(opt.smart_tag) |
584 | 587 | ||
585 | if success: | 588 | if success: |
586 | manifest_name = "smart_sync_override.xml" | 589 | manifest_name = smart_sync_manifest_name |
587 | manifest_path = os.path.join(self.manifest.manifestProject.worktree, | ||
588 | manifest_name) | ||
589 | try: | 590 | try: |
590 | f = open(manifest_path, 'w') | 591 | f = open(smart_sync_manifest_path, 'w') |
591 | try: | 592 | try: |
592 | f.write(manifest_str) | 593 | f.write(manifest_str) |
593 | finally: | 594 | finally: |
594 | f.close() | 595 | f.close() |
595 | except IOError: | 596 | except IOError as e: |
596 | print('error: cannot write manifest to %s' % manifest_path, | 597 | print('error: cannot write manifest to %s:\n%s' |
598 | % (smart_sync_manifest_path, e), | ||
597 | file=sys.stderr) | 599 | file=sys.stderr) |
598 | sys.exit(1) | 600 | sys.exit(1) |
599 | self._ReloadManifest(manifest_name) | 601 | self._ReloadManifest(manifest_name) |
@@ -610,6 +612,13 @@ later is required to fix a server side protocol bug. | |||
610 | % (self.manifest.manifest_server, e.errcode, e.errmsg), | 612 | % (self.manifest.manifest_server, e.errcode, e.errmsg), |
611 | file=sys.stderr) | 613 | file=sys.stderr) |
612 | sys.exit(1) | 614 | sys.exit(1) |
615 | else: # Not smart sync or smart tag mode | ||
616 | if os.path.isfile(smart_sync_manifest_path): | ||
617 | try: | ||
618 | os.remove(smart_sync_manifest_path) | ||
619 | except OSError as e: | ||
620 | print('error: failed to remove existing smart sync override manifest: %s' % | ||
621 | e, file=sys.stderr) | ||
613 | 622 | ||
614 | rp = self.manifest.repoProject | 623 | rp = self.manifest.repoProject |
615 | rp.PreSync() | 624 | rp.PreSync() |