summaryrefslogtreecommitdiffstats
path: root/subcmds
diff options
context:
space:
mode:
authorDan Willemsen <dwillemsen@google.com>2015-09-09 21:43:32 +0000
committerDan Willemsen <dwillemsen@google.com>2015-09-09 21:43:32 +0000
commit037552333182497e9e38bff984de44df0f93e54b (patch)
tree4833639da39e34dc4388f06b1eccb541d74589db /subcmds
parent250303b437855c2b50d052a05a08ed517423af8b (diff)
downloadgit-repo-037552333182497e9e38bff984de44df0f93e54b.tar.gz
Revert "GITC: Always update the gitc manifest from the repo manifest"
This reverts commit 250303b437855c2b50d052a05a08ed517423af8b. Change-Id: I1fd8af20f802553151aacb953c913f3305ca6057
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, 21 insertions, 23 deletions
diff --git a/subcmds/gitc_init.py b/subcmds/gitc_init.py
index c957a9dc..e99affa5 100644
--- a/subcmds/gitc_init.py
+++ b/subcmds/gitc_init.py
@@ -68,13 +68,15 @@ 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 manifest_file = self.manifest.manifestFile 71 for name, remote in self.manifest.remotes.iteritems():
72 remote.fetchUrl = remote.resolvedFetchUrl
73
72 if opt.manifest_file: 74 if opt.manifest_file:
73 if not os.path.exists(opt.manifest_file): 75 if not os.path.exists(opt.manifest_file):
74 print('fatal: Specified manifest file %s does not exist.' % 76 print('fatal: Specified manifest file %s does not exist.' %
75 opt.manifest_file) 77 opt.manifest_file)
76 sys.exit(1) 78 sys.exit(1)
77 manifest_file = opt.manifest_file 79 self.manifest.Override(opt.manifest_file)
78 gitc_utils.generate_gitc_manifest(self.repodir, opt.gitc_client, None, manifest_file) 80 gitc_utils.generate_gitc_manifest(self.client_dir, self.manifest)
79 print('Please run `cd %s` to view your GITC client.' % 81 print('Please run `cd %s` to view your GITC client.' %
80 os.path.join(gitc_utils.GITC_FS_ROOT_DIR, opt.gitc_client)) 82 os.path.join(gitc_utils.GITC_FS_ROOT_DIR, opt.gitc_client))
diff --git a/subcmds/start.py b/subcmds/start.py
index 940c3413..188fd7c6 100644
--- a/subcmds/start.py
+++ b/subcmds/start.py
@@ -57,6 +57,7 @@ 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 = {}
60 if self.gitc_manifest: 61 if self.gitc_manifest:
61 all_projects = self.GetProjects(projects, manifest=self.gitc_manifest, 62 all_projects = self.GetProjects(projects, manifest=self.gitc_manifest,
62 missing_ok=True) 63 missing_ok=True)
@@ -66,6 +67,7 @@ revision specified in the manifest.
66 else: 67 else:
67 project.already_synced = False 68 project.already_synced = False
68 project.old_revision = project.revisionExpr 69 project.old_revision = project.revisionExpr
70 proj_name_to_gitc_proj_dict[project.name] = project
69 project.revisionExpr = None 71 project.revisionExpr = None
70 # Save the GITC manifest. 72 # Save the GITC manifest.
71 gitc_utils.save_manifest(self.gitc_manifest) 73 gitc_utils.save_manifest(self.gitc_manifest)
@@ -75,10 +77,9 @@ revision specified in the manifest.
75 pm = Progress('Starting %s' % nb, len(all_projects)) 77 pm = Progress('Starting %s' % nb, len(all_projects))
76 for project in all_projects: 78 for project in all_projects:
77 pm.update() 79 pm.update()
78
79 if self.gitc_manifest: 80 if self.gitc_manifest:
80 gitc_project = self.gitc_manifest.paths[project.relpath] 81 gitc_project = proj_name_to_gitc_proj_dict[project.name]
81 # Sync projects that have not been opened. 82 # Sync projects that have already been opened.
82 if not gitc_project.already_synced: 83 if not gitc_project.already_synced:
83 proj_localdir = os.path.join(self.gitc_manifest.gitc_client_dir, 84 proj_localdir = os.path.join(self.gitc_manifest.gitc_client_dir,
84 project.relpath) 85 project.relpath)
@@ -88,7 +89,7 @@ revision specified in the manifest.
88 project.Sync_NetworkHalf() 89 project.Sync_NetworkHalf()
89 sync_buf = SyncBuffer(self.manifest.manifestProject.config) 90 sync_buf = SyncBuffer(self.manifest.manifestProject.config)
90 project.Sync_LocalHalf(sync_buf) 91 project.Sync_LocalHalf(sync_buf)
91 project.revisionId = gitc_project.old_revision 92 project.revisionExpr = gitc_project.old_revision
92 93
93 # If the current revision is a specific SHA1 then we can't push back 94 # If the current revision is a specific SHA1 then we can't push back
94 # to it; so substitute with dest_branch if defined, or with manifest 95 # to it; so substitute with dest_branch if defined, or with manifest
@@ -99,7 +100,6 @@ revision specified in the manifest.
99 branch_merge = project.dest_branch 100 branch_merge = project.dest_branch
100 else: 101 else:
101 branch_merge = self.manifest.default.revisionExpr 102 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 79cfaaa5..7b44dbd8 100644
--- a/subcmds/sync.py
+++ b/subcmds/sync.py
@@ -670,36 +670,32 @@ 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.
673 if self.gitc_manifest: 675 if self.gitc_manifest:
674 gitc_manifest_projects = self.GetProjects(args, 676 gitc_manifest_projects = self.GetProjects(args,
677 manifest=self.gitc_manifest,
675 missing_ok=True) 678 missing_ok=True)
676 gitc_projects = [] 679 gitc_projects = []
677 opened_projects = [] 680 opened_projects = []
678 for project in gitc_manifest_projects: 681 for project in gitc_manifest_projects:
679 if project.relpath in self.gitc_manifest.paths and \ 682 if not project.old_revision:
680 self.gitc_manifest.paths[project.relpath].old_revision: 683 gitc_projects.append(project)
681 opened_projects.append(project.relpath)
682 else: 684 else:
683 gitc_projects.append(project.relpath) 685 opened_projects.append(project)
684 686
685 if not args: 687 if gitc_projects and not opt.local_only:
686 gitc_projects = None
687
688 if gitc_projects != [] and not opt.local_only:
689 print('Updating GITC client: %s' % self.gitc_manifest.gitc_client_name) 688 print('Updating GITC client: %s' % self.gitc_manifest.gitc_client_name)
690 gitc_utils.generate_gitc_manifest(self.repodir, 689 gitc_utils.generate_gitc_manifest(self.gitc_manifest.gitc_client_dir,
691 self.gitc_manifest.gitc_client_name,
692 self.gitc_manifest, 690 self.gitc_manifest,
693 self.manifest.manifestFile,
694 gitc_projects) 691 gitc_projects)
695 print('GITC client successfully synced.') 692 print('GITC client successfully synced.')
696 693
697 # The opened projects need to be synced as normal, therefore we 694 # The opened projects need to be synced as normal, therefore we
698 # generate a new args list to represent the opened projects. 695 # generate a new args list to represent the opened projects.
699 # TODO: make this more reliable -- if there's a project name/path overlap, 696 args = []
700 # this may choose the wrong project. 697 for proj in opened_projects:
701 args = [os.path.relpath(self.manifest.paths[p].worktree, os.getcwd()) 698 args.append(os.path.relpath(proj.worktree, os.getcwd()))
702 for p in opened_projects]
703 if not args: 699 if not args:
704 return 700 return
705 all_projects = self.GetProjects(args, 701 all_projects = self.GetProjects(args,