api: exposed modified added/modified/deleted functions of commit to return only paths.
This combined with full text search build for certain repositories that each commit contains lots of file changes results in *huge* (10x in some cases) performance gain.
This commit is contained in:
parent
8189b1607f
commit
bd9e5dc1c3
4 changed files with 51 additions and 21 deletions
|
|
@ -355,12 +355,12 @@ def get_pull_request_or_error(pullrequestid):
|
|||
def build_commit_data(commit, detail_level):
|
||||
parsed_diff = []
|
||||
if detail_level == 'extended':
|
||||
for f in commit.added:
|
||||
parsed_diff.append(_get_commit_dict(filename=f.path, op='A'))
|
||||
for f in commit.changed:
|
||||
parsed_diff.append(_get_commit_dict(filename=f.path, op='M'))
|
||||
for f in commit.removed:
|
||||
parsed_diff.append(_get_commit_dict(filename=f.path, op='D'))
|
||||
for f_path in commit.added_paths:
|
||||
parsed_diff.append(_get_commit_dict(filename=f_path, op='A'))
|
||||
for f_path in commit.changed_paths:
|
||||
parsed_diff.append(_get_commit_dict(filename=f_path, op='M'))
|
||||
for f_path in commit.removed_paths:
|
||||
parsed_diff.append(_get_commit_dict(filename=f_path, op='D'))
|
||||
|
||||
elif detail_level == 'full':
|
||||
from rhodecode.lib.diffs import DiffProcessor
|
||||
|
|
|
|||
|
|
@ -432,8 +432,11 @@ class GitCommit(base.BaseCommit):
|
|||
"""
|
||||
if not self.parents:
|
||||
return list(self._get_file_nodes())
|
||||
return AddedFileNodesGenerator(
|
||||
[n for n in self._get_paths_for_status('added')], self)
|
||||
return AddedFileNodesGenerator(self.added_paths, self)
|
||||
|
||||
@LazyProperty
|
||||
def added_paths(self):
|
||||
return [n for n in self._get_paths_for_status('added')]
|
||||
|
||||
@LazyProperty
|
||||
def changed(self):
|
||||
|
|
@ -442,8 +445,11 @@ class GitCommit(base.BaseCommit):
|
|||
"""
|
||||
if not self.parents:
|
||||
return []
|
||||
return ChangedFileNodesGenerator(
|
||||
[n for n in self._get_paths_for_status('modified')], self)
|
||||
return ChangedFileNodesGenerator(self.changed_paths, self)
|
||||
|
||||
@LazyProperty
|
||||
def changed_paths(self):
|
||||
return [n for n in self._get_paths_for_status('modified')]
|
||||
|
||||
@LazyProperty
|
||||
def removed(self):
|
||||
|
|
@ -452,8 +458,11 @@ class GitCommit(base.BaseCommit):
|
|||
"""
|
||||
if not self.parents:
|
||||
return []
|
||||
return RemovedFileNodesGenerator(
|
||||
[n for n in self._get_paths_for_status('deleted')], self)
|
||||
return RemovedFileNodesGenerator(self.removed_paths, self)
|
||||
|
||||
@LazyProperty
|
||||
def removed_paths(self):
|
||||
return [n for n in self._get_paths_for_status('deleted')]
|
||||
|
||||
def _get_submodule_url(self, submodule_path):
|
||||
git_modules_path = '.gitmodules'
|
||||
|
|
|
|||
|
|
@ -372,18 +372,30 @@ class MercurialCommit(base.BaseCommit):
|
|||
"""
|
||||
Returns list of added ``FileNode`` objects.
|
||||
"""
|
||||
return AddedFileNodesGenerator([n for n in self.status[1]], self)
|
||||
return AddedFileNodesGenerator(self.added_paths, self)
|
||||
|
||||
@LazyProperty
|
||||
def added_paths(self):
|
||||
return [n for n in self.status[1]]
|
||||
|
||||
@property
|
||||
def changed(self):
|
||||
"""
|
||||
Returns list of modified ``FileNode`` objects.
|
||||
"""
|
||||
return ChangedFileNodesGenerator([n for n in self.status[0]], self)
|
||||
return ChangedFileNodesGenerator(self.changed_paths, self)
|
||||
|
||||
@LazyProperty
|
||||
def changed_paths(self):
|
||||
return [n for n in self.status[0]]
|
||||
|
||||
@property
|
||||
def removed(self):
|
||||
"""
|
||||
Returns list of removed ``FileNode`` objects.
|
||||
"""
|
||||
return RemovedFileNodesGenerator([n for n in self.status[2]], self)
|
||||
return RemovedFileNodesGenerator(self.removed_paths, self)
|
||||
|
||||
@LazyProperty
|
||||
def removed_paths(self):
|
||||
return [n for n in self.status[2]]
|
||||
|
|
|
|||
|
|
@ -218,18 +218,27 @@ class SubversionCommit(base.BaseCommit):
|
|||
|
||||
@property
|
||||
def added(self):
|
||||
return nodes.AddedFileNodesGenerator(
|
||||
self._changes_cache['added'], self)
|
||||
return nodes.AddedFileNodesGenerator(self.added_paths, self)
|
||||
|
||||
@LazyProperty
|
||||
def added_paths(self):
|
||||
return [n for n in self._changes_cache['added']]
|
||||
|
||||
@property
|
||||
def changed(self):
|
||||
return nodes.ChangedFileNodesGenerator(
|
||||
self._changes_cache['changed'], self)
|
||||
return nodes.ChangedFileNodesGenerator(self.changed_paths, self)
|
||||
|
||||
@LazyProperty
|
||||
def changed_paths(self):
|
||||
return [n for n in self._changes_cache['changed']]
|
||||
|
||||
@property
|
||||
def removed(self):
|
||||
return nodes.RemovedFileNodesGenerator(
|
||||
self._changes_cache['removed'], self)
|
||||
return nodes.RemovedFileNodesGenerator(self.removed_paths, self)
|
||||
|
||||
@LazyProperty
|
||||
def removed_paths(self):
|
||||
return [n for n in self._changes_cache['removed']]
|
||||
|
||||
|
||||
def _date_from_svn_properties(properties):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue