Changeset - 94e0541a5283
[Not reviewed]
beta
0 1 0
Marcin Kuzminski - 15 years ago 2011-02-07 21:40:57
marcin@python-works.com
reimplemented changeset ranges to use vcs directly
1 file changed with 2 insertions and 31 deletions:
0 comments (0 inline, 0 general)
rhodecode/controllers/changeset.py
Show inline comments
 
@@ -57,63 +57,34 @@ class ChangesetController(BaseController
 
    def index(self, revision):
 
        hg_model = ScmModel()
 

	
 
        def wrap_to_table(str):
 

	
 
            return '''<table class="code-difftable">
 
                        <tr class="line">
 
                        <td class="lineno new"></td>
 
                        <td class="code"><pre>%s</pre></td>
 
                        </tr>
 
                      </table>''' % str
 

	
 
        def get_cs_range(repo, rev_start, rev_end, limit=None):
 
            """
 
            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 revision cannot be after End')
 

	
 
            yield start_cs
 

	
 
            cnt = 0
 
            while 1:
 

	
 
                next = start_cs.next()
 
                yield next
 
                start_cs = next
 
                cnt += 1
 
                if next == end_cs:
 
                    break
 
                if limit and cnt > limit:
 
                    break
 
        #======================================================================
 
        # REAL CODE BELOW
 
        #======================================================================
 
        #get ranges of revisions if preset
 
        rev_range = revision.split('...')[:2]
 
        range_limit = 50
 
        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, range_limit)
 
                rev_ranges = repo.get_changeset_ranges(rev_start, rev_end,
 
                                                       range_limit)
 
            else:
 
                rev_ranges = [repo.get_changeset(revision)]
 

	
 
            c.cs_ranges = list(rev_ranges)
 

	
 
        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
0 comments (0 inline, 0 general)