diff rhodecode/lib/vcs/backends/git/changeset.py @ 2968:4abfb1afd9f5 beta

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
author Marcin Kuzminski <marcin@python-works.com>
date Sat, 27 Oct 2012 15:07:01 +0200
parents ba4fb9c441c6
children e0da2c0ecee1
line wrap: on
line diff
--- a/rhodecode/lib/vcs/backends/git/changeset.py	Sat Oct 27 14:33:29 2012 +0200
+++ b/rhodecode/lib/vcs/backends/git/changeset.py	Sat Oct 27 15:07:01 2012 +0200
@@ -11,7 +11,8 @@
 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 @@
         """
         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 @@
         """
         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 @@
         """
         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)