comparison 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
comparison
equal deleted inserted replaced
2967:e46d0a90556e 2968:4abfb1afd9f5
9 from rhodecode.lib.vcs.exceptions import VCSError 9 from rhodecode.lib.vcs.exceptions import VCSError
10 from rhodecode.lib.vcs.exceptions import ChangesetDoesNotExistError 10 from rhodecode.lib.vcs.exceptions import ChangesetDoesNotExistError
11 from rhodecode.lib.vcs.exceptions import ImproperArchiveTypeError 11 from rhodecode.lib.vcs.exceptions import ImproperArchiveTypeError
12 from rhodecode.lib.vcs.backends.base import BaseChangeset, EmptyChangeset 12 from rhodecode.lib.vcs.backends.base import BaseChangeset, EmptyChangeset
13 from rhodecode.lib.vcs.nodes import FileNode, DirNode, NodeKind, RootNode, \ 13 from rhodecode.lib.vcs.nodes import FileNode, DirNode, NodeKind, RootNode, \
14 RemovedFileNode, SubModuleNode 14 RemovedFileNode, SubModuleNode, ChangedFileNodesGenerator,\
15 AddedFileNodesGenerator, RemovedFileNodesGenerator
15 from rhodecode.lib.vcs.utils import safe_unicode 16 from rhodecode.lib.vcs.utils import safe_unicode
16 from rhodecode.lib.vcs.utils import date_fromtimestamp 17 from rhodecode.lib.vcs.utils import date_fromtimestamp
17 from rhodecode.lib.vcs.utils.lazy import LazyProperty 18 from rhodecode.lib.vcs.utils.lazy import LazyProperty
18 19
19 20
466 """ 467 """
467 Returns list of added ``FileNode`` objects. 468 Returns list of added ``FileNode`` objects.
468 """ 469 """
469 if not self.parents: 470 if not self.parents:
470 return list(self._get_file_nodes()) 471 return list(self._get_file_nodes())
471 return [self.get_node(path) for path in self._get_paths_for_status('added')] 472 return AddedFileNodesGenerator([n for n in
473 self._get_paths_for_status('added')], self)
472 474
473 @LazyProperty 475 @LazyProperty
474 def changed(self): 476 def changed(self):
475 """ 477 """
476 Returns list of modified ``FileNode`` objects. 478 Returns list of modified ``FileNode`` objects.
477 """ 479 """
478 if not self.parents: 480 if not self.parents:
479 return [] 481 return []
480 return [self.get_node(path) for path in self._get_paths_for_status('modified')] 482 return ChangedFileNodesGenerator([n for n in
483 self._get_paths_for_status('modified')], self)
481 484
482 @LazyProperty 485 @LazyProperty
483 def removed(self): 486 def removed(self):
484 """ 487 """
485 Returns list of removed ``FileNode`` objects. 488 Returns list of removed ``FileNode`` objects.
486 """ 489 """
487 if not self.parents: 490 if not self.parents:
488 return [] 491 return []
489 return [RemovedFileNode(path) for path in self._get_paths_for_status('deleted')] 492 return RemovedFileNodesGenerator([n for n in
493 self._get_paths_for_status('deleted')], self)