diff options
-rw-r--r-- | git_superproject.py | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/git_superproject.py b/git_superproject.py index 19b91259..1dd59435 100644 --- a/git_superproject.py +++ b/git_superproject.py | |||
@@ -98,8 +98,11 @@ class Superproject(object): | |||
98 | _SUPERPROJECT_MANIFEST_NAME) | 98 | _SUPERPROJECT_MANIFEST_NAME) |
99 | git_name = '' | 99 | git_name = '' |
100 | if self._manifest.superproject: | 100 | if self._manifest.superproject: |
101 | remote_name = self._manifest.superproject['remote'].name | 101 | remote = self._manifest.superproject['remote'] |
102 | git_name = hashlib.md5(remote_name.encode('utf8')).hexdigest() + '-' | 102 | git_name = hashlib.md5(remote.name.encode('utf8')).hexdigest() + '-' |
103 | self._remote_url = remote.url | ||
104 | else: | ||
105 | self._remote_url = None | ||
103 | self._work_git_name = git_name + _SUPERPROJECT_GIT_NAME | 106 | self._work_git_name = git_name + _SUPERPROJECT_GIT_NAME |
104 | self._work_git = os.path.join(self._superproject_path, self._work_git_name) | 107 | self._work_git = os.path.join(self._superproject_path, self._work_git_name) |
105 | 108 | ||
@@ -130,13 +133,17 @@ class Superproject(object): | |||
130 | print(message, file=sys.stderr) | 133 | print(message, file=sys.stderr) |
131 | self._git_event_log.ErrorEvent(message, f'{message}') | 134 | self._git_event_log.ErrorEvent(message, f'{message}') |
132 | 135 | ||
136 | def _LogMessagePrefix(self): | ||
137 | """Returns the prefix string to be logged in each log message""" | ||
138 | return f'repo superproject branch: {self._branch} url: {self._remote_url}' | ||
139 | |||
133 | def _LogError(self, message): | 140 | def _LogError(self, message): |
134 | """Logs error message to stderr and _git_event_log.""" | 141 | """Logs error message to stderr and _git_event_log.""" |
135 | self._LogMessage(f'repo superproject error: {message}') | 142 | self._LogMessage(f'{self._LogMessagePrefix()} error: {message}') |
136 | 143 | ||
137 | def _LogWarning(self, message): | 144 | def _LogWarning(self, message): |
138 | """Logs warning message to stderr and _git_event_log.""" | 145 | """Logs warning message to stderr and _git_event_log.""" |
139 | self._LogMessage(f'repo superproject warning: {message}') | 146 | self._LogMessage(f'{self._LogMessagePrefix()} warning: {message}') |
140 | 147 | ||
141 | def _Init(self): | 148 | def _Init(self): |
142 | """Sets up a local Git repository to get a copy of a superproject. | 149 | """Sets up a local Git repository to get a copy of a superproject. |
@@ -162,11 +169,8 @@ class Superproject(object): | |||
162 | return False | 169 | return False |
163 | return True | 170 | return True |
164 | 171 | ||
165 | def _Fetch(self, url): | 172 | def _Fetch(self): |
166 | """Fetches a local copy of a superproject for the manifest based on url. | 173 | """Fetches a local copy of a superproject for the manifest based on |_remote_url|. |
167 | |||
168 | Args: | ||
169 | url: superproject's url. | ||
170 | 174 | ||
171 | Returns: | 175 | Returns: |
172 | True if fetch is successful, or False. | 176 | True if fetch is successful, or False. |
@@ -177,7 +181,8 @@ class Superproject(object): | |||
177 | if not git_require((2, 28, 0)): | 181 | if not git_require((2, 28, 0)): |
178 | self._LogWarning('superproject requires a git version 2.28 or later') | 182 | self._LogWarning('superproject requires a git version 2.28 or later') |
179 | return False | 183 | return False |
180 | cmd = ['fetch', url, '--depth', '1', '--force', '--no-tags', '--filter', 'blob:none'] | 184 | cmd = ['fetch', self._remote_url, '--depth', '1', '--force', '--no-tags', |
185 | '--filter', 'blob:none'] | ||
181 | if self._branch: | 186 | if self._branch: |
182 | cmd += [self._branch + ':' + self._branch] | 187 | cmd += [self._branch + ':' + self._branch] |
183 | p = GitCommand(None, | 188 | p = GitCommand(None, |
@@ -234,15 +239,14 @@ class Superproject(object): | |||
234 | print('NOTICE: --use-superproject is in beta; report any issues to the ' | 239 | print('NOTICE: --use-superproject is in beta; report any issues to the ' |
235 | 'address described in `repo version`', file=sys.stderr) | 240 | 'address described in `repo version`', file=sys.stderr) |
236 | should_exit = True | 241 | should_exit = True |
237 | url = self._manifest.superproject['remote'].url | 242 | if not self._remote_url: |
238 | if not url: | ||
239 | self._LogWarning(f'superproject URL is not defined in manifest: ' | 243 | self._LogWarning(f'superproject URL is not defined in manifest: ' |
240 | f'{self._manifest.manifestFile}') | 244 | f'{self._manifest.manifestFile}') |
241 | return SyncResult(False, should_exit) | 245 | return SyncResult(False, should_exit) |
242 | 246 | ||
243 | if not self._Init(): | 247 | if not self._Init(): |
244 | return SyncResult(False, should_exit) | 248 | return SyncResult(False, should_exit) |
245 | if not self._Fetch(url): | 249 | if not self._Fetch(): |
246 | return SyncResult(False, should_exit) | 250 | return SyncResult(False, should_exit) |
247 | if not self._quiet: | 251 | if not self._quiet: |
248 | print('%s: Initial setup for superproject completed.' % self._work_git) | 252 | print('%s: Initial setup for superproject completed.' % self._work_git) |
@@ -260,7 +264,7 @@ class Superproject(object): | |||
260 | 264 | ||
261 | data = self._LsTree() | 265 | data = self._LsTree() |
262 | if not data: | 266 | if not data: |
263 | self._LogWarning(f'warning: git ls-tree failed to return data for manifest: ' | 267 | self._LogWarning(f'git ls-tree failed to return data for manifest: ' |
264 | f'{self._manifest.manifestFile}') | 268 | f'{self._manifest.manifestFile}') |
265 | return CommitIdsResult(None, True) | 269 | return CommitIdsResult(None, True) |
266 | 270 | ||