You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2015/08/21 00:11:00 UTC

[1/3] allura git commit: [#7963] Add copy detection option for commit view

Repository: allura
Updated Branches:
  refs/heads/master 0a673b1e4 -> cebab9121


[#7963] Add copy detection option for commit view


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/1ec59202
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/1ec59202
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/1ec59202

Branch: refs/heads/master
Commit: 1ec59202c3bc65161e3ca7eeac8047e59f2ee698
Parents: 0a673b1
Author: Heith Seewald <hs...@hsmb.local>
Authored: Tue Aug 18 12:41:59 2015 -0400
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Thu Aug 20 22:04:49 2015 +0000

----------------------------------------------------------------------
 Allura/development.ini              |  4 ++++
 ForgeGit/forgegit/model/git_repo.py | 26 +++++++++++++-------------
 2 files changed, 17 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/1ec59202/Allura/development.ini
----------------------------------------------------------------------
diff --git a/Allura/development.ini b/Allura/development.ini
index 934ea67..af7b5f6 100644
--- a/Allura/development.ini
+++ b/Allura/development.ini
@@ -313,6 +313,10 @@ scm.import.retry_sleep_secs = 5
 ; Set to 0 to cache all references. Remove entirely to cache nothing.
 repo_refs_cache_threshold = .01
 
+; Enabling copy detection will display copies and renames in the commit views
+; at the expense of much longer response times.
+scm.commits.detect_copies = false
+
 ; One-click merge is enabled by default, but can be turned off on for each type of repo
 scm.merge.git.disabled = false
 scm.merge.hg.disabled = false

http://git-wip-us.apache.org/repos/asf/allura/blob/1ec59202/ForgeGit/forgegit/model/git_repo.py
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/model/git_repo.py b/ForgeGit/forgegit/model/git_repo.py
index 8229b7e..14374a6 100644
--- a/ForgeGit/forgegit/model/git_repo.py
+++ b/ForgeGit/forgegit/model/git_repo.py
@@ -647,18 +647,18 @@ class GitImplementation(M.RepositoryImplementation):
 
     def paged_diffs(self, commit_id, start=0, end=None):
         result = {'added': [], 'removed': [], 'changed': [], 'copied': [], 'renamed': []}
-
-        cmd_output = self._git.git.diff_tree(
-            '--no-commit-id',
-            '-M',  # detect renames
-            '-C',  # detect copies
-            '--name-status',
-            '--no-abbrev',
-            '--root',
-            # show tree entry itself as well as subtrees (Commit.added_paths relies on this)
-            '-t',
-            '-z',  # don't escape filenames and use \x00 as fields delimiter
-            commit_id).split('\x00')[:-1]
+        cmd_args = ['--no-commit-id',
+                    '--name-status',
+                    '--no-abbrev',
+                    '--root',
+                    # show tree entry itself as well as subtrees (Commit.added_paths relies on this)
+                    '-t',
+                    '-z'  # don't escape filenames and use \x00 as fields delimiter
+                    ]
+        if asbool(tg.config.get('scm.commits.detect_copies', False)):
+            cmd_args += ['-M', '-C']
+
+        cmd_output = self._git.git.diff_tree(commit_id, *cmd_args).split('\x00')[:-1]  # don't escape filenames and use \x00 as fields delimiter
 
         ''' cmd_output will be like:
         [
@@ -668,7 +668,7 @@ class GitImplementation(M.RepositoryImplementation):
         'another filename',
         'M',
         'po',
-        'R100',
+        'R100',  # <-- These next three lines would only show up with 'detect_copies' enabled
         'po/sr.po',
         'po/sr_Latn.po',
         ]


[3/3] allura git commit: [#7963] default scm.commit.git.detect_copies to True in the code too

Posted by br...@apache.org.
[#7963] default scm.commit.git.detect_copies to True in the code too


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/cebab912
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/cebab912
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/cebab912

Branch: refs/heads/master
Commit: cebab9121b22dfe63ad66cb04e710293f5073417
Parents: 33efd12
Author: Dave Brondsema <db...@slashdotmedia.com>
Authored: Thu Aug 20 22:04:33 2015 +0000
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Thu Aug 20 22:04:50 2015 +0000

----------------------------------------------------------------------
 ForgeGit/forgegit/model/git_repo.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/cebab912/ForgeGit/forgegit/model/git_repo.py
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/model/git_repo.py b/ForgeGit/forgegit/model/git_repo.py
index 84de881..4c6cfa9 100644
--- a/ForgeGit/forgegit/model/git_repo.py
+++ b/ForgeGit/forgegit/model/git_repo.py
@@ -655,7 +655,7 @@ class GitImplementation(M.RepositoryImplementation):
                     '-t',
                     '-z'  # don't escape filenames and use \x00 as fields delimiter
                     ]
-        if asbool(tg.config.get('scm.commit.git.detect_copies', False)):
+        if asbool(tg.config.get('scm.commit.git.detect_copies', True)):
             cmd_args += ['-M', '-C']
 
         cmd_output = self._git.git.diff_tree(commit_id, *cmd_args).split('\x00')[:-1]  # don't escape filenames and use \x00 as fields delimiter


[2/3] allura git commit: [#7963] Add tests for paged_diffs

Posted by br...@apache.org.
[#7963] Add tests for paged_diffs


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/33efd128
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/33efd128
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/33efd128

Branch: refs/heads/master
Commit: 33efd12839c21adac575b6be376580ffd8673d4e
Parents: 1ec5920
Author: Heith Seewald <hs...@hsmb.local>
Authored: Tue Aug 18 15:29:19 2015 -0400
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Thu Aug 20 22:04:50 2015 +0000

----------------------------------------------------------------------
 Allura/development.ini                          |   5 +-
 ForgeGit/forgegit/model/git_repo.py             |   5 +-
 .../2d/14b961ade8540113df9107be045e4ae4136ac5   | Bin 0 -> 161 bytes
 .../34/6c52c1dddc729e2c2711f809336401f0ff925e   |   2 +
 .../3c/b2bbcd7997f89060a14fe8b1a363f01883087f   |   2 +
 .../3c/bb55013cbb01ccb8d473e686e1a57d9c489243   | Bin 0 -> 161 bytes
 .../5a/3a87cf4d70ddae8f993254fb78e7974b812852   | Bin 0 -> 168 bytes
 .../86/2e77e5e7b157ade8c862a0dd6e73383e0f919f   | Bin 0 -> 139 bytes
 .../96/060b218ad9724646371e479775c7f664c141d1   | Bin 0 -> 134 bytes
 .../b7/07968ce4752b27410cc1fc71ced036314d6fbe   | Bin 0 -> 168 bytes
 .../c6/0e405e7150f65b19a3622dfe983ca37d28fe53   | Bin 0 -> 162 bytes
 .../d4/018e3cd5ff24921c0d31076e8bb44f54e77ce0   | Bin 0 -> 36 bytes
 .../data/weird-chars.git/refs/heads/master      |   2 +-
 .../tests/functional/test_controllers.py        |   1 +
 .../forgegit/tests/model/test_repository.py     |  59 +++++++++++++++++++
 15 files changed, 71 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/33efd128/Allura/development.ini
----------------------------------------------------------------------
diff --git a/Allura/development.ini b/Allura/development.ini
index af7b5f6..a7b8a05 100644
--- a/Allura/development.ini
+++ b/Allura/development.ini
@@ -314,8 +314,9 @@ scm.import.retry_sleep_secs = 5
 repo_refs_cache_threshold = .01
 
 ; Enabling copy detection will display copies and renames in the commit views
-; at the expense of much longer response times.
-scm.commits.detect_copies = false
+; at the expense of much longer response times. SVN tracks copies by default.
+scm.commit.git.detect_copies = true
+scm.commit.hg.detect_copies = false
 
 ; One-click merge is enabled by default, but can be turned off on for each type of repo
 scm.merge.git.disabled = false

http://git-wip-us.apache.org/repos/asf/allura/blob/33efd128/ForgeGit/forgegit/model/git_repo.py
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/model/git_repo.py b/ForgeGit/forgegit/model/git_repo.py
index 14374a6..84de881 100644
--- a/ForgeGit/forgegit/model/git_repo.py
+++ b/ForgeGit/forgegit/model/git_repo.py
@@ -655,7 +655,7 @@ class GitImplementation(M.RepositoryImplementation):
                     '-t',
                     '-z'  # don't escape filenames and use \x00 as fields delimiter
                     ]
-        if asbool(tg.config.get('scm.commits.detect_copies', False)):
+        if asbool(tg.config.get('scm.commit.git.detect_copies', False)):
             cmd_args += ['-M', '-C']
 
         cmd_output = self._git.git.diff_tree(commit_id, *cmd_args).split('\x00')[:-1]  # don't escape filenames and use \x00 as fields delimiter
@@ -687,7 +687,7 @@ class GitImplementation(M.RepositoryImplementation):
                 }))
                 x += 3
             else:
-                files.append((status, h.really_unicode(cmd_output[x+1])))
+                files.append((status, h.really_unicode(cmd_output[x + 1])))
                 x += 2
 
         for status, name in files[start:end]:
@@ -701,6 +701,7 @@ class GitImplementation(M.RepositoryImplementation):
             change_list.append(name)
 
         result['total'] = len(files)
+
         return result
 
     @contextmanager

http://git-wip-us.apache.org/repos/asf/allura/blob/33efd128/ForgeGit/forgegit/tests/data/weird-chars.git/objects/2d/14b961ade8540113df9107be045e4ae4136ac5
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/tests/data/weird-chars.git/objects/2d/14b961ade8540113df9107be045e4ae4136ac5 b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/2d/14b961ade8540113df9107be045e4ae4136ac5
new file mode 100644
index 0000000..08a3877
Binary files /dev/null and b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/2d/14b961ade8540113df9107be045e4ae4136ac5 differ

http://git-wip-us.apache.org/repos/asf/allura/blob/33efd128/ForgeGit/forgegit/tests/data/weird-chars.git/objects/34/6c52c1dddc729e2c2711f809336401f0ff925e
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/tests/data/weird-chars.git/objects/34/6c52c1dddc729e2c2711f809336401f0ff925e b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/34/6c52c1dddc729e2c2711f809336401f0ff925e
new file mode 100644
index 0000000..0d89789
--- /dev/null
+++ b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/34/6c52c1dddc729e2c2711f809336401f0ff925e
@@ -0,0 +1,2 @@
+x��Mj�0��}
+]�aF���e�=�X�92�'8*�~M{����o��un΋\���B=G�R9kH�ۄ<���7?L��{���2��j�s�)3�#H"D!����w���>1�꾀]����>�s��^tyw,!g9��+�
/��?f���\����>����M�
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/33efd128/ForgeGit/forgegit/tests/data/weird-chars.git/objects/3c/b2bbcd7997f89060a14fe8b1a363f01883087f
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/tests/data/weird-chars.git/objects/3c/b2bbcd7997f89060a14fe8b1a363f01883087f b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/3c/b2bbcd7997f89060a14fe8b1a363f01883087f
new file mode 100644
index 0000000..f72de10
--- /dev/null
+++ b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/3c/b2bbcd7997f89060a14fe8b1a363f01883087f
@@ -0,0 +1,2 @@
+x��M
+�0@a�9�\@��$���K��`�Lh���F��Eo��m>xe�籃u��WHA���\YAJD�P�AS�z�*��G*
+�ZYbK�Y�-S�]a��Fo����p��py�T�<l��ۜO�Rx��A��EKG�Z����'W�)�R������H�
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/33efd128/ForgeGit/forgegit/tests/data/weird-chars.git/objects/3c/bb55013cbb01ccb8d473e686e1a57d9c489243
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/tests/data/weird-chars.git/objects/3c/bb55013cbb01ccb8d473e686e1a57d9c489243 b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/3c/bb55013cbb01ccb8d473e686e1a57d9c489243
new file mode 100644
index 0000000..ab1097a
Binary files /dev/null and b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/3c/bb55013cbb01ccb8d473e686e1a57d9c489243 differ

http://git-wip-us.apache.org/repos/asf/allura/blob/33efd128/ForgeGit/forgegit/tests/data/weird-chars.git/objects/5a/3a87cf4d70ddae8f993254fb78e7974b812852
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/tests/data/weird-chars.git/objects/5a/3a87cf4d70ddae8f993254fb78e7974b812852 b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/5a/3a87cf4d70ddae8f993254fb78e7974b812852
new file mode 100644
index 0000000..c5661ae
Binary files /dev/null and b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/5a/3a87cf4d70ddae8f993254fb78e7974b812852 differ

http://git-wip-us.apache.org/repos/asf/allura/blob/33efd128/ForgeGit/forgegit/tests/data/weird-chars.git/objects/86/2e77e5e7b157ade8c862a0dd6e73383e0f919f
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/tests/data/weird-chars.git/objects/86/2e77e5e7b157ade8c862a0dd6e73383e0f919f b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/86/2e77e5e7b157ade8c862a0dd6e73383e0f919f
new file mode 100644
index 0000000..31448c7
Binary files /dev/null and b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/86/2e77e5e7b157ade8c862a0dd6e73383e0f919f differ

http://git-wip-us.apache.org/repos/asf/allura/blob/33efd128/ForgeGit/forgegit/tests/data/weird-chars.git/objects/96/060b218ad9724646371e479775c7f664c141d1
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/tests/data/weird-chars.git/objects/96/060b218ad9724646371e479775c7f664c141d1 b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/96/060b218ad9724646371e479775c7f664c141d1
new file mode 100644
index 0000000..319159e
Binary files /dev/null and b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/96/060b218ad9724646371e479775c7f664c141d1 differ

http://git-wip-us.apache.org/repos/asf/allura/blob/33efd128/ForgeGit/forgegit/tests/data/weird-chars.git/objects/b7/07968ce4752b27410cc1fc71ced036314d6fbe
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/tests/data/weird-chars.git/objects/b7/07968ce4752b27410cc1fc71ced036314d6fbe b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/b7/07968ce4752b27410cc1fc71ced036314d6fbe
new file mode 100644
index 0000000..e760d93
Binary files /dev/null and b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/b7/07968ce4752b27410cc1fc71ced036314d6fbe differ

http://git-wip-us.apache.org/repos/asf/allura/blob/33efd128/ForgeGit/forgegit/tests/data/weird-chars.git/objects/c6/0e405e7150f65b19a3622dfe983ca37d28fe53
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/tests/data/weird-chars.git/objects/c6/0e405e7150f65b19a3622dfe983ca37d28fe53 b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/c6/0e405e7150f65b19a3622dfe983ca37d28fe53
new file mode 100644
index 0000000..33147cd
Binary files /dev/null and b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/c6/0e405e7150f65b19a3622dfe983ca37d28fe53 differ

http://git-wip-us.apache.org/repos/asf/allura/blob/33efd128/ForgeGit/forgegit/tests/data/weird-chars.git/objects/d4/018e3cd5ff24921c0d31076e8bb44f54e77ce0
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/tests/data/weird-chars.git/objects/d4/018e3cd5ff24921c0d31076e8bb44f54e77ce0 b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/d4/018e3cd5ff24921c0d31076e8bb44f54e77ce0
new file mode 100644
index 0000000..d84e12d
Binary files /dev/null and b/ForgeGit/forgegit/tests/data/weird-chars.git/objects/d4/018e3cd5ff24921c0d31076e8bb44f54e77ce0 differ

http://git-wip-us.apache.org/repos/asf/allura/blob/33efd128/ForgeGit/forgegit/tests/data/weird-chars.git/refs/heads/master
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/tests/data/weird-chars.git/refs/heads/master b/ForgeGit/forgegit/tests/data/weird-chars.git/refs/heads/master
index ff3a92b..f76e179 100644
--- a/ForgeGit/forgegit/tests/data/weird-chars.git/refs/heads/master
+++ b/ForgeGit/forgegit/tests/data/weird-chars.git/refs/heads/master
@@ -1 +1 @@
-f3de6a0e7601cdde326054a1cc708afdc1dbe70b
+346c52c1dddc729e2c2711f809336401f0ff925e

http://git-wip-us.apache.org/repos/asf/allura/blob/33efd128/ForgeGit/forgegit/tests/functional/test_controllers.py
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/tests/functional/test_controllers.py b/ForgeGit/forgegit/tests/functional/test_controllers.py
index dcc975f..cdff7c8 100644
--- a/ForgeGit/forgegit/tests/functional/test_controllers.py
+++ b/ForgeGit/forgegit/tests/functional/test_controllers.py
@@ -851,6 +851,7 @@ class TestGitRename(TestController):
         resp = self.app.get('/src-git/ci/7c09182e61af959e4f1fb0e354bab49f14ef810d/tree/f.txt')
         assert "2 lines (1 with data), 10 Bytes" in resp
 
+    @patch.dict(h.tg.config, {'scm.commit.git.detect_copies': 'true'})
     def test_commit(self):
         # get the rename commit itself
         resp = self.app.get('/src-git/ci/b120505a61225e6c14bee3e5b5862db81628c35c/')

http://git-wip-us.apache.org/repos/asf/allura/blob/33efd128/ForgeGit/forgegit/tests/model/test_repository.py
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/tests/model/test_repository.py b/ForgeGit/forgegit/tests/model/test_repository.py
index 25daa62..2f04bbb 100644
--- a/ForgeGit/forgegit/tests/model/test_repository.py
+++ b/ForgeGit/forgegit/tests/model/test_repository.py
@@ -650,6 +650,7 @@ class TestGitRepo(unittest.TestCase, RepoImplTestBase):
             tempfile.mkdtemp.return_value,
             ignore_errors=True)
 
+    @mock.patch.dict('allura.lib.app_globals.config',  {'scm.commit.git.detect_copies': 'false'})
     @td.with_tool('test', 'Git', 'src-weird', 'Git', type='git')
     def test_paged_diffs(self):
         # setup
@@ -722,6 +723,64 @@ class TestGitRepo(unittest.TestCase, RepoImplTestBase):
             'total': 2,
         }
         assert_equals(diffs, expected)
+        diffs = repo.paged_diffs('346c52c1dddc729e2c2711f809336401f0ff925e')  # Test copy
+        expected = {
+            'added': [u'README.copy'],
+            'removed': [],
+            'copied': [],
+            'renamed': [],
+            'changed': [u'README'],
+            'total': 2,
+        }
+        assert_equals(diffs, expected)
+        diffs = repo.paged_diffs('3cb2bbcd7997f89060a14fe8b1a363f01883087f')  # Test rename
+        expected = {
+            'added': [u'README'],
+            'removed': [u'README-copy.md'],
+            'copied': [],
+            'renamed': [],
+            'changed': [],
+            'total': 2,
+        }
+        assert_equals(diffs, expected)
+
+    @mock.patch.dict('allura.lib.app_globals.config',  {'scm.commit.git.detect_copies': 'true'})
+    @td.with_tool('test', 'Git', 'src-weird', 'Git', type='git')
+    def test_paged_diffs_with_detect_copies(self):
+        # setup
+        h.set_context('test', 'src-weird', neighborhood='Projects')
+        repo_dir = pkg_resources.resource_filename(
+            'forgegit', 'tests/data')
+        repo = GM.Repository(
+            name='weird-chars.git',
+            fs_path=repo_dir,
+            url_path='/src-weird/',
+            tool='git',
+            status='creating')
+        repo.refresh()
+        ThreadLocalORMSession.flush_all()
+        ThreadLocalORMSession.close_all()
+
+        diffs = repo.paged_diffs('346c52c1dddc729e2c2711f809336401f0ff925e')  # Test copy
+        expected = {
+            'added': [],
+            'removed': [],
+            'copied': [{'new': u'README.copy', 'old': u'README', 'ratio': 1.0}],
+            'renamed': [],
+            'changed': [u'README'],
+            'total': 2,
+        }
+        assert_equals(diffs, expected)
+        diffs = repo.paged_diffs('3cb2bbcd7997f89060a14fe8b1a363f01883087f')  # Test rename
+        expected = {
+            'added': [],
+            'removed': [],
+            'copied': [],
+            'renamed': [{'new': u'README', 'old': u'README-copy.md', 'ratio': 1.0}],
+            'changed': [],
+            'total': 1,
+        }
+        assert_equals(diffs, expected)
 
     def test_merge_base(self):
         res = self.repo._impl.merge_base(self.merge_request)