aboutsummaryrefslogtreecommitdiff
path: root/rhodecode/lib/vcs/backends/git/changeset.py
diff options
context:
space:
mode:
authorMarcin Kuzminski <marcin@python-works.com>2012-10-27 15:07:01 +0200
committerMarcin Kuzminski <marcin@python-works.com>2012-10-27 15:07:01 +0200
commit074cbef6457da0a38134843b4b263984cd2c2f73 (patch)
treeaf126b2d439693ab31612959283864b93fc6d8c0 /rhodecode/lib/vcs/backends/git/changeset.py
parent1ba7e60f8f19c9fe35222612d0fc5942e14a39bd (diff)
fixes #630 git statistics do too much work making them slow.
added/changed/removed methods didn't use generator methods to return the list of changes - added test for that case --HG-- branch : beta
Diffstat (limited to 'rhodecode/lib/vcs/backends/git/changeset.py')
-rw-r--r--rhodecode/lib/vcs/backends/git/changeset.py12
1 files changed, 8 insertions, 4 deletions
diff --git a/rhodecode/lib/vcs/backends/git/changeset.py b/rhodecode/lib/vcs/backends/git/changeset.py
index 224d94ff..9bd6d308 100644
--- a/rhodecode/lib/vcs/backends/git/changeset.py
+++ b/rhodecode/lib/vcs/backends/git/changeset.py
@@ -11,7 +11,8 @@ from rhodecode.lib.vcs.exceptions import ChangesetDoesNotExistError
from rhodecode.lib.vcs.exceptions import ImproperArchiveTypeError
from rhodecode.lib.vcs.backends.base import BaseChangeset, EmptyChangeset
from rhodecode.lib.vcs.nodes import FileNode, DirNode, NodeKind, RootNode, \
- RemovedFileNode, SubModuleNode
+ RemovedFileNode, SubModuleNode, ChangedFileNodesGenerator,\
+ AddedFileNodesGenerator, RemovedFileNodesGenerator
from rhodecode.lib.vcs.utils import safe_unicode
from rhodecode.lib.vcs.utils import date_fromtimestamp
from rhodecode.lib.vcs.utils.lazy import LazyProperty
@@ -468,7 +469,8 @@ class GitChangeset(BaseChangeset):
"""
if not self.parents:
return list(self._get_file_nodes())
- return [self.get_node(path) for path in self._get_paths_for_status('added')]
+ return AddedFileNodesGenerator([n for n in
+ self._get_paths_for_status('added')], self)
@LazyProperty
def changed(self):
@@ -477,7 +479,8 @@ class GitChangeset(BaseChangeset):
"""
if not self.parents:
return []
- return [self.get_node(path) for path in self._get_paths_for_status('modified')]
+ return ChangedFileNodesGenerator([n for n in
+ self._get_paths_for_status('modified')], self)
@LazyProperty
def removed(self):
@@ -486,4 +489,5 @@ class GitChangeset(BaseChangeset):
"""
if not self.parents:
return []
- return [RemovedFileNode(path) for path in self._get_paths_for_status('deleted')]
+ return RemovedFileNodesGenerator([n for n in
+ self._get_paths_for_status('deleted')], self)