@@ -29,25 +29,26 @@ import logging
import traceback
from pylons import tmpl_context as c, url, request, response
from pylons.i18n.translation import _
from pylons.controllers.util import redirect
import rhodecode.lib.helpers as h
from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
from rhodecode.lib.base import BaseController, render
from rhodecode.lib.utils import EmptyChangeset
from rhodecode.model.scm import ScmModel
from vcs.exceptions import RepositoryError, ChangesetError
from vcs.exceptions import RepositoryError, ChangesetError, \
ChangesetDoesNotExistError
from vcs.nodes import FileNode
from vcs.utils import diffs as differ
from vcs.utils.ordered_dict import OrderedDict
log = logging.getLogger(__name__)
class ChangesetController(BaseController):
@LoginRequired()
@HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
'repository.admin')
def __before__(self):
@@ -68,60 +69,60 @@ class ChangesetController(BaseController
def get_cs_range(repo, rev_start, rev_end):
"""
Temp fix function until VCS will handle that
see issue #48
:param rev_start:
:param rev_end:
start_cs = repo.get_changeset(rev_start)
end_cs = repo.get_changeset(rev_end)
if start_cs.revision >= end_cs.revision:
raise Exception('Start cannot be after End')
raise Exception('Start revision cannot be after End')
yield start_cs
while 1:
next = start_cs.next()
yield next
start_cs = next
if next == end_cs:
break
#======================================================================
# REAL CODE BELOW
#get ranges of revisions if preset
rev_range = revision.split('...')[:2]
try:
repo = hg_model.get_repo(c.repo_name)
if len(rev_range) == 2:
rev_start = rev_range[0]
rev_end = rev_range[1]
rev_ranges = get_cs_range(repo, rev_start, rev_end)
c.cs_ranges = list(rev_ranges)
else:
rev_ranges = [repo.get_changeset(revision)]
except RepositoryError, e:
except (RepositoryError, ChangesetDoesNotExistError, Exception), e:
log.error(traceback.format_exc())
h.flash(str(e), category='warning')
return redirect(url('home'))
c.changes = OrderedDict()
c.sum_added = 0
c.sum_removed = 0
for changeset in c.cs_ranges:
c.changes[changeset.raw_id] = []
changeset_parent = changeset.parents[0]
except IndexError:
changeset_parent = None
#==================================================================
# ADDED FILES
Status change: