Skip to content

Commit 9157b18

Browse files
committed
Split out commit log into it's own module
1 parent eb2ae66 commit 9157b18

9 files changed

Lines changed: 55 additions & 50 deletions

File tree

codespeed/commits/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from .logs import get_logs

codespeed/commits/logs.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# -*- coding: utf-8 -*-
2+
from __future__ import absolute_import, unicode_literals
3+
4+
import logging
5+
6+
logger = logging.getLogger(__name__)
7+
8+
9+
def get_logs(rev, startrev, update=False):
10+
logs = []
11+
12+
if rev.branch.project.repo_type == 'S':
13+
from .subversion import getlogs, updaterepo
14+
elif rev.branch.project.repo_type == 'M':
15+
from .mercurial import getlogs, updaterepo
16+
elif rev.branch.project.repo_type == 'G':
17+
from .git import getlogs, updaterepo
18+
elif rev.branch.project.repo_type == 'H':
19+
from .github import getlogs, updaterepo
20+
else:
21+
if rev.branch.project.repo_type not in ("N", ""):
22+
logger.warning("Don't know how to retrieve logs from %s project",
23+
rev.branch.project.get_repo_type_display())
24+
return logs
25+
26+
if update:
27+
updaterepo(rev.branch.project)
28+
29+
logs = getlogs(rev, startrev)
30+
31+
# Remove last log because the startrev log shouldn't be shown
32+
if len(logs) > 1 and logs[-1].get('commitid') == startrev.commitid:
33+
logs.pop()
34+
35+
return logs

codespeed/domain.py

Lines changed: 10 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44
import logging
55
from datetime import datetime
66
from django.core.exceptions import ValidationError
7-
87
from django.conf import settings
8+
99
from codespeed.models import (Environment, Executable, Revision,
1010
Project, Branch, Benchmark,
1111
Result, Report)
12+
from codespeed import commits
1213

1314
logger = logging.getLogger(__name__)
1415

@@ -156,45 +157,6 @@ def getcomparisonexes():
156157
return all_executables, exekeys
157158

158159

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-
198160
def validate_result(item):
199161
"""
200162
Validates that a result dictionary has all needed parameters
@@ -290,10 +252,17 @@ def save_result(data):
290252
return str(e), True
291253
if p.repo_type not in ("N", ""):
292254
try:
293-
saverevisioninfo(rev)
255+
commit_logs = commits.get_logs(rev, rev, update=True)
294256
except RuntimeError as e:
295257
logger.warning("unable to save revision %s info: %s", rev, e,
296258
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+
297266
rev.save()
298267

299268
exe, created = Executable.objects.get_or_create(

codespeed/views.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
Executable, Benchmark, Branch)
1717
from codespeed.domain import (get_default_environment, getbaselineexecutables,
1818
getdefaultexecutable, getcomparisonexes,
19-
getcommitlogs, save_result,
20-
create_report_if_enough_data)
19+
save_result, create_report_if_enough_data)
20+
from codespeed import commits
2121

2222
logger = logging.getLogger(__name__)
2323

@@ -76,7 +76,8 @@ def getcomparisondata(request):
7676
).values_list('benchmark', 'value'))
7777

7878
for bench in benchmarks:
79-
compdata[exe['key']][env.id][bench.id] = results.get(bench.id, None)
79+
compdata[exe['key']][env.id][bench.id] = results.get(
80+
bench.id, None)
8081

8182
compdata['error'] = "None"
8283

@@ -334,7 +335,7 @@ def gettimelinedata(request):
334335
def timeline(request):
335336
data = request.GET
336337

337-
## Configuration of default parameters ##
338+
# Configuration of default parameters #
338339
# Default Environment
339340
enviros = Environment.objects.all()
340341
if not enviros:
@@ -564,7 +565,7 @@ def changes(request):
564565

565566
for project, revisions in revisionlists.items():
566567
revisionlists[project] = [
567-
(unicode(rev), rev.commitid) for rev in revisions
568+
(str(rev), rev.commitid) for rev in revisions
568569
]
569570
revisionlists = json.dumps(revisionlists)
570571

@@ -624,7 +625,7 @@ def displaylogs(request):
624625
else:
625626
startrev = startrev[0]
626627

627-
remotelogs = getcommitlogs(rev, startrev)
628+
remotelogs = commits.get_logs(rev, startrev)
628629
if len(remotelogs):
629630
try:
630631
if remotelogs[0]['error']:

sample_project/settings.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,8 @@
5959
# Define a class that logs unhandled errors
6060
class LogUncatchedErrors:
6161
def process_exception(self, request, exception):
62-
logging.error("Unhandled Exception on request for %s\n%s" %
63-
(request.build_absolute_uri(),
64-
traceback.format_exc()))
62+
logging.error("Unhandled Exception on request for %s\n%s",
63+
request.build_absolute_uri(), traceback.format_exc())
6564
# And add it to the middleware classes
6665
MIDDLEWARE_CLASSES += ('sample_project.settings.LogUncatchedErrors',)
6766

0 commit comments

Comments
 (0)