You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by je...@apache.org on 2015/03/30 14:26:57 UTC
[41/45] allura git commit: [#7837] ticket:738 Rewrite paged_diffs
using log instead of diff_summarize
[#7837] ticket:738 Rewrite paged_diffs using log instead of diff_summarize
To be consistent with previous behavior we stick with `log` call.
Because results can differ. I don't sure why, but on test repo for example:
$ svn diff --summarize -r4:5
A b/b/c
A b/b
A b
$ svn log -v -r 5
------------------------------------------------------------------------
r5 | rick446 | 2010-11-18 20:14:21 +0000 (Чтв, 18 Лис 2010) | 1 line
Changed paths:
A /b (from /a:4)
Copied a => b
------------------------------------------------------------------------
Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/a1138423
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/a1138423
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/a1138423
Branch: refs/heads/ib/7837
Commit: a113842395bca766fc26129cae95cd345b74b7d2
Parents: 38740e5
Author: Igor Bondarenko <je...@gmail.com>
Authored: Wed Mar 4 13:50:08 2015 +0000
Committer: Igor Bondarenko <je...@gmail.com>
Committed: Fri Mar 27 15:13:08 2015 +0000
----------------------------------------------------------------------
ForgeSVN/forgesvn/model/svn.py | 43 ++++++++++----------
.../forgesvn/tests/model/test_repository.py | 11 ++---
2 files changed, 27 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/allura/blob/a1138423/ForgeSVN/forgesvn/model/svn.py
----------------------------------------------------------------------
diff --git a/ForgeSVN/forgesvn/model/svn.py b/ForgeSVN/forgesvn/model/svn.py
index c033f44..28bf132 100644
--- a/ForgeSVN/forgesvn/model/svn.py
+++ b/ForgeSVN/forgesvn/model/svn.py
@@ -781,28 +781,27 @@ class SVNImplementation(M.RepositoryImplementation):
return []
def paged_diffs(self, commit_id, start=0, end=None):
- added, removed, changed, total = [], [], [], 0
+ result = {'added': [], 'removed': [], 'changed': [], 'total': 0}
rev = self._revision(commit_id)
- prev_rev = self._revision(self._oid(rev.number - 1))
- summary = self._svn.diff_summarize(
- self._url,
- prev_rev,
- self._url,
- rev)
- total = len(summary)
- for s in summary:
- if s.summarize_kind == pysvn.diff_summarize_kind.added:
- added.append(h.really_unicode(s.path))
- elif s.summarize_kind == pysvn.diff_summarize_kind.delete:
- removed.append(h.really_unicode(s.path))
- elif s.summarize_kind == pysvn.diff_summarize_kind.modified:
- changed.append(h.really_unicode(s.path))
- return {
- 'added': added,
- 'removed': removed,
- 'changed': changed,
- 'total': total,
- }
-
+ try:
+ log_info = self._svn.log(
+ self._url,
+ revision_start=rev,
+ revision_end=rev,
+ discover_changed_paths=True)
+ except pysvn.ClientError:
+ return result
+ if len(log_info) == 0:
+ return result
+ paths = log_info[0].changed_paths
+ result['total'] = len(paths)
+ for p in paths[start:end]:
+ if p['action'] == 'A':
+ result['added'].append(h.really_unicode(p.path))
+ elif p['action'] == 'D':
+ result['removed'].append(h.really_unicode(p.path))
+ elif p['action'] == 'M':
+ result['changed'].append(h.really_unicode(p.path))
+ return result
Mapper.compile_all()
http://git-wip-us.apache.org/repos/asf/allura/blob/a1138423/ForgeSVN/forgesvn/tests/model/test_repository.py
----------------------------------------------------------------------
diff --git a/ForgeSVN/forgesvn/tests/model/test_repository.py b/ForgeSVN/forgesvn/tests/model/test_repository.py
index 79005ac..c3a392a 100644
--- a/ForgeSVN/forgesvn/tests/model/test_repository.py
+++ b/ForgeSVN/forgesvn/tests/model/test_repository.py
@@ -373,7 +373,8 @@ class TestSVNRepo(unittest.TestCase, RepoImplTestBase):
actual = entry.paged_diffs(start=1, end=3)
self.assertEqual(expected, actual)
- empty = M.repository.Commit().paged_diffs()
+ fake_id = self.repo._impl._oid(100)
+ empty = M.repository.Commit(_id=fake_id, repo=self.repo).paged_diffs()
self.assertEqual(sorted(actual.keys()), sorted(empty.keys()))
def test_diff_create_file(self):
@@ -1198,7 +1199,7 @@ class TestDirectRepoAccess(object):
def test_paged_diffs(self):
diffs = self.rev.diffs
expected = {
- 'added': [u'ЗРЯЧИЙ_ТА_ПОБАЧИТЬ'],
+ 'added': [u'/ЗРЯЧИЙ_ТА_ПОБАЧИТЬ'],
'removed': [],
'changed': [],
'copied': [],
@@ -1209,7 +1210,7 @@ class TestDirectRepoAccess(object):
_id = self.repo._impl._oid(2)
diffs = self.repo.commit(_id).diffs
expected = {
- 'added': [u'a/b/c/hello.txt', u'a/b/c', u'a/b', u'a'],
+ 'added': [u'/a', u'/a/b', u'/a/b/c', u'/a/b/c/hello.txt'],
'removed': [],
'changed': [],
'copied': [],
@@ -1222,7 +1223,7 @@ class TestDirectRepoAccess(object):
expected = {
'added': [],
'removed': [],
- 'changed': [u'README'],
+ 'changed': [u'/README'],
'copied': [],
'total': 1,
}
@@ -1232,7 +1233,7 @@ class TestDirectRepoAccess(object):
diffs = self.repo.commit(_id).diffs
expected = {
'added': [],
- 'removed': ['a/b/c/hello.txt'],
+ 'removed': ['/a/b/c/hello.txt'],
'changed': [],
'copied': [],
'total': 1,