summaryrefslogtreecommitdiffstats
path: root/subcmds
diff options
context:
space:
mode:
Diffstat (limited to 'subcmds')
-rw-r--r--subcmds/gitc_init.py8
-rw-r--r--subcmds/start.py10
-rw-r--r--subcmds/sync.py26
3 files changed, 23 insertions, 21 deletions
diff --git a/subcmds/gitc_init.py b/subcmds/gitc_init.py
index e99affa5..c957a9dc 100644
--- a/subcmds/gitc_init.py
+++ b/subcmds/gitc_init.py
@@ -68,15 +68,13 @@ use for this GITC client.
68 os.mkdir(self.client_dir) 68 os.mkdir(self.client_dir)
69 super(GitcInit, self).Execute(opt, args) 69 super(GitcInit, self).Execute(opt, args)
70 70
71 for name, remote in self.manifest.remotes.iteritems(): 71 manifest_file = self.manifest.manifestFile
72 remote.fetchUrl = remote.resolvedFetchUrl
73
74 if opt.manifest_file: 72 if opt.manifest_file:
75 if not os.path.exists(opt.manifest_file): 73 if not os.path.exists(opt.manifest_file):
76 print('fatal: Specified manifest file %s does not exist.' % 74 print('fatal: Specified manifest file %s does not exist.' %
77 opt.manifest_file) 75 opt.manifest_file)
78 sys.exit(1) 76 sys.exit(1)
79 self.manifest.Override(opt.manifest_file) 77 manifest_file = opt.manifest_file
80 gitc_utils.generate_gitc_manifest(self.client_dir, self.manifest) 78 gitc_utils.generate_gitc_manifest(self.repodir, opt.gitc_client, None, manifest_file)
81 print('Please run `cd %s` to view your GITC client.' % 79 print('Please run `cd %s` to view your GITC client.' %
82 os.path.join(gitc_utils.GITC_FS_ROOT_DIR, opt.gitc_client)) 80 os.path.join(gitc_utils.GITC_FS_ROOT_DIR, opt.gitc_client))
diff --git a/subcmds/start.py b/subcmds/start.py
index 188fd7c6..940c3413 100644
--- a/subcmds/start.py
+++ b/subcmds/start.py
@@ -57,7 +57,6 @@ revision specified in the manifest.
57 print("error: at least one project must be specified", file=sys.stderr) 57 print("error: at least one project must be specified", file=sys.stderr)
58 sys.exit(1) 58 sys.exit(1)
59 59
60 proj_name_to_gitc_proj_dict = {}
61 if self.gitc_manifest: 60 if self.gitc_manifest:
62 all_projects = self.GetProjects(projects, manifest=self.gitc_manifest, 61 all_projects = self.GetProjects(projects, manifest=self.gitc_manifest,
63 missing_ok=True) 62 missing_ok=True)
@@ -67,7 +66,6 @@ revision specified in the manifest.
67 else: 66 else:
68 project.already_synced = False 67 project.already_synced = False
69 project.old_revision = project.revisionExpr 68 project.old_revision = project.revisionExpr
70 proj_name_to_gitc_proj_dict[project.name] = project
71 project.revisionExpr = None 69 project.revisionExpr = None
72 # Save the GITC manifest. 70 # Save the GITC manifest.
73 gitc_utils.save_manifest(self.gitc_manifest) 71 gitc_utils.save_manifest(self.gitc_manifest)
@@ -77,9 +75,10 @@ revision specified in the manifest.
77 pm = Progress('Starting %s' % nb, len(all_projects)) 75 pm = Progress('Starting %s' % nb, len(all_projects))
78 for project in all_projects: 76 for project in all_projects:
79 pm.update() 77 pm.update()
78
80 if self.gitc_manifest: 79 if self.gitc_manifest:
81 gitc_project = proj_name_to_gitc_proj_dict[project.name] 80 gitc_project = self.gitc_manifest.paths[project.relpath]
82 # Sync projects that have already been opened. 81 # Sync projects that have not been opened.
83 if not gitc_project.already_synced: 82 if not gitc_project.already_synced:
84 proj_localdir = os.path.join(self.gitc_manifest.gitc_client_dir, 83 proj_localdir = os.path.join(self.gitc_manifest.gitc_client_dir,
85 project.relpath) 84 project.relpath)
@@ -89,7 +88,7 @@ revision specified in the manifest.
89 project.Sync_NetworkHalf() 88 project.Sync_NetworkHalf()
90 sync_buf = SyncBuffer(self.manifest.manifestProject.config) 89 sync_buf = SyncBuffer(self.manifest.manifestProject.config)
91 project.Sync_LocalHalf(sync_buf) 90 project.Sync_LocalHalf(sync_buf)
92 project.revisionExpr = gitc_project.old_revision 91 project.revisionId = gitc_project.old_revision
93 92
94 # If the current revision is a specific SHA1 then we can't push back 93 # If the current revision is a specific SHA1 then we can't push back
95 # to it; so substitute with dest_branch if defined, or with manifest 94 # to it; so substitute with dest_branch if defined, or with manifest
@@ -100,6 +99,7 @@ revision specified in the manifest.
100 branch_merge = project.dest_branch 99 branch_merge = project.dest_branch
101 else: 100 else:
102 branch_merge = self.manifest.default.revisionExpr 101 branch_merge = self.manifest.default.revisionExpr
102
103 if not project.StartBranch(nb, branch_merge=branch_merge): 103 if not project.StartBranch(nb, branch_merge=branch_merge):
104 err.append(project) 104 err.append(project)
105 pm.end() 105 pm.end()
diff --git a/subcmds/sync.py b/subcmds/sync.py
index 7b44dbd8..79cfaaa5 100644
--- a/subcmds/sync.py
+++ b/subcmds/sync.py
@@ -670,32 +670,36 @@ later is required to fix a server side protocol bug.
670 if opt.jobs is None: 670 if opt.jobs is None:
671 self.jobs = self.manifest.default.sync_j 671 self.jobs = self.manifest.default.sync_j
672 672
673 # TODO (sbasi) - Add support for manifest changes, aka projects
674 # have been added or deleted from the manifest.
675 if self.gitc_manifest: 673 if self.gitc_manifest:
676 gitc_manifest_projects = self.GetProjects(args, 674 gitc_manifest_projects = self.GetProjects(args,
677 manifest=self.gitc_manifest,
678 missing_ok=True) 675 missing_ok=True)
679 gitc_projects = [] 676 gitc_projects = []
680 opened_projects = [] 677 opened_projects = []
681 for project in gitc_manifest_projects: 678 for project in gitc_manifest_projects:
682 if not project.old_revision: 679 if project.relpath in self.gitc_manifest.paths and \
683 gitc_projects.append(project) 680 self.gitc_manifest.paths[project.relpath].old_revision:
681 opened_projects.append(project.relpath)
684 else: 682 else:
685 opened_projects.append(project) 683 gitc_projects.append(project.relpath)
686 684
687 if gitc_projects and not opt.local_only: 685 if not args:
686 gitc_projects = None
687
688 if gitc_projects != [] and not opt.local_only:
688 print('Updating GITC client: %s' % self.gitc_manifest.gitc_client_name) 689 print('Updating GITC client: %s' % self.gitc_manifest.gitc_client_name)
689 gitc_utils.generate_gitc_manifest(self.gitc_manifest.gitc_client_dir, 690 gitc_utils.generate_gitc_manifest(self.repodir,
691 self.gitc_manifest.gitc_client_name,
690 self.gitc_manifest, 692 self.gitc_manifest,
693 self.manifest.manifestFile,
691 gitc_projects) 694 gitc_projects)
692 print('GITC client successfully synced.') 695 print('GITC client successfully synced.')
693 696
694 # The opened projects need to be synced as normal, therefore we 697 # The opened projects need to be synced as normal, therefore we
695 # generate a new args list to represent the opened projects. 698 # generate a new args list to represent the opened projects.
696 args = [] 699 # TODO: make this more reliable -- if there's a project name/path overlap,
697 for proj in opened_projects: 700 # this may choose the wrong project.
698 args.append(os.path.relpath(proj.worktree, os.getcwd())) 701 args = [os.path.relpath(self.manifest.paths[p].worktree, os.getcwd())
702 for p in opened_projects]
699 if not args: 703 if not args:
700 return 704 return
701 all_projects = self.GetProjects(args, 705 all_projects = self.GetProjects(args,