# HG changeset patch # User Marcin Kuzminski # Date 2016-12-23 16:39:32 # Node ID fa7f32fdd8f538d59d505c3e5233bad3d0ea4963 # Parent 14af763040aaf36b1d08e358d294dab11f21bd70 compare: using f_path shouldn't generate full range of commits. - in case of comparing just 1 file the range of commits is not relevant. This in addition speeds rendering the compare page by a LOT. diff --git a/rhodecode/controllers/compare.py b/rhodecode/controllers/compare.py --- a/rhodecode/controllers/compare.py +++ b/rhodecode/controllers/compare.py @@ -183,21 +183,28 @@ class CompareController(BaseRepoControll pre_load = ["author", "branch", "date", "message"] c.ancestor = None - try: - c.commit_ranges = source_scm.compare( - source_commit.raw_id, target_commit.raw_id, - target_scm, merge, pre_load=pre_load) - if merge: - c.ancestor = source_scm.get_common_ancestor( - source_commit.raw_id, target_commit.raw_id, target_scm) - except RepositoryRequirementError: - msg = _('Could not compare repos with different ' - 'large file settings') - log.error(msg) - if partial: - return msg - h.flash(msg, category='error') - return redirect(url('compare_home', repo_name=c.repo_name)) + + if c.file_path: + if source_commit == target_commit: + c.commit_ranges = [] + else: + c.commit_ranges = [target_commit] + else: + try: + c.commit_ranges = source_scm.compare( + source_commit.raw_id, target_commit.raw_id, + target_scm, merge, pre_load=pre_load) + if merge: + c.ancestor = source_scm.get_common_ancestor( + source_commit.raw_id, target_commit.raw_id, target_scm) + except RepositoryRequirementError: + msg = _('Could not compare repos with different ' + 'large file settings') + log.error(msg) + if partial: + return msg + h.flash(msg, category='error') + return redirect(url('compare_home', repo_name=c.repo_name)) c.statuses = c.rhodecode_db_repo.statuses( [x.raw_id for x in c.commit_ranges])