summaryrefslogtreecommitdiffstats
path: root/git_superproject.py
diff options
context:
space:
mode:
Diffstat (limited to 'git_superproject.py')
-rw-r--r--git_superproject.py32
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