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 | ||
