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���\YAJD�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)