Mercurial > hgsubversion
view tests/test_diff.py @ 1293:9e85feb93984
wrappers: improve push performance by reusing the existing metadata
Push operation for n commits regenerated SVNMeta class 2*n+1 times
(one time at beginning, n times in push() loop, 1 time per each of n
pulls). This operation is very costly when the revision map is big.
This commit reuses this metadata every time when there is no rebase
made between svn commits which leads to 1 metadata rebuild in optimistic
case and n+1 metadata rebuilds in pessimistic case (rebase after every commit).
To achieve this I added extra parameter to pull command to pass metadata
to it.
All unit tests are passing for this change.
author | Mateusz Kwapich <mitrandir@fb.com> |
---|---|
date | Fri, 12 Dec 2014 16:17:11 -0800 |
parents | d741f536f23a |
children | c6b01fd34694 |
line wrap: on
line source
import test_util import unittest from mercurial import ui from hgsubversion import wrappers expected_diff_output = '''Index: alpha =================================================================== --- alpha\t(revision 3) +++ alpha\t(working copy) @@ -1,1 +1,3 @@ -file: alpha +alpha + +added line Index: foo =================================================================== new file mode 100644 --- foo\t(revision 0) +++ foo\t(working copy) @@ -0,0 +1,1 @@ +This is missing a newline. \ No newline at end of file ''' class DiffTests(test_util.TestBase): def test_diff_output(self): self._load_fixture_and_fetch('two_revs.svndump') self.commitchanges([('foo', 'foo', 'This is missing a newline.'), ('alpha', 'alpha', 'alpha\n\nadded line\n'), ]) u = ui.ui() u.pushbuffer() wrappers.diff(lambda x, y, z: None, u, self.repo, svn=True) self.assertEqual(u.popbuffer(), expected_diff_output)