|
4 | 4 | import logging |
5 | 5 | from datetime import datetime |
6 | 6 | from django.core.exceptions import ValidationError |
7 | | - |
8 | 7 | from django.conf import settings |
| 8 | + |
9 | 9 | from codespeed.models import (Environment, Executable, Revision, |
10 | 10 | Project, Branch, Benchmark, |
11 | 11 | Result, Report) |
| 12 | +from codespeed import commits |
12 | 13 |
|
13 | 14 | logger = logging.getLogger(__name__) |
14 | 15 |
|
@@ -156,45 +157,6 @@ def getcomparisonexes(): |
156 | 157 | return all_executables, exekeys |
157 | 158 |
|
158 | 159 |
|
159 | | -def getcommitlogs(rev, startrev, update=False): |
160 | | - logs = [] |
161 | | - |
162 | | - if rev.branch.project.repo_type == 'S': |
163 | | - from codespeed.subversion import getlogs, updaterepo |
164 | | - elif rev.branch.project.repo_type == 'M': |
165 | | - from codespeed.mercurial import getlogs, updaterepo |
166 | | - elif rev.branch.project.repo_type == 'G': |
167 | | - from codespeed.git import getlogs, updaterepo |
168 | | - elif rev.branch.project.repo_type == 'H': |
169 | | - from codespeed.github import getlogs, updaterepo |
170 | | - else: |
171 | | - if rev.branch.project.repo_type not in ("N", ""): |
172 | | - logger.warning("Don't know how to retrieve logs from %s project", |
173 | | - rev.branch.project.get_repo_type_display()) |
174 | | - return logs |
175 | | - |
176 | | - if update: |
177 | | - updaterepo(rev.branch.project) |
178 | | - |
179 | | - logs = getlogs(rev, startrev) |
180 | | - |
181 | | - # Remove last log because the startrev log shouldn't be shown |
182 | | - if len(logs) > 1 and logs[-1].get('commitid') == startrev.commitid: |
183 | | - logs.pop() |
184 | | - |
185 | | - return logs |
186 | | - |
187 | | - |
188 | | -def saverevisioninfo(rev): |
189 | | - log = getcommitlogs(rev, rev, update=True) |
190 | | - |
191 | | - if log: |
192 | | - log = log[0] |
193 | | - rev.author = log['author'] |
194 | | - rev.date = log['date'] |
195 | | - rev.message = log['message'] |
196 | | - |
197 | | - |
198 | 160 | def validate_result(item): |
199 | 161 | """ |
200 | 162 | Validates that a result dictionary has all needed parameters |
@@ -290,10 +252,17 @@ def save_result(data): |
290 | 252 | return str(e), True |
291 | 253 | if p.repo_type not in ("N", ""): |
292 | 254 | try: |
293 | | - saverevisioninfo(rev) |
| 255 | + commit_logs = commits.get_logs(rev, rev, update=True) |
294 | 256 | except RuntimeError as e: |
295 | 257 | logger.warning("unable to save revision %s info: %s", rev, e, |
296 | 258 | exc_info=True) |
| 259 | + else: |
| 260 | + if commit_logs: |
| 261 | + log = commit_logs[0] |
| 262 | + rev.author = log['author'] |
| 263 | + rev.date = log['date'] |
| 264 | + rev.message = log['message'] |
| 265 | + |
297 | 266 | rev.save() |
298 | 267 |
|
299 | 268 | exe, created = Executable.objects.get_or_create( |
|
0 commit comments