Mercurial > hgsubversion
view tests/test_push_eol.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 | 23992b41b6b7 |
children |
line wrap: on
line source
import test_util import unittest class TestPushEol(test_util.TestBase): obsolete_mode_tests = True stupid_mode_tests = True def setUp(self): test_util.TestBase.setUp(self) self._load_fixture_and_fetch('emptyrepo.svndump') def test_push_dirs(self): changes = [ # Root files with LF, CRLF and mixed EOL ('lf', 'lf', 'a\nb\n\nc'), ('crlf', 'crlf', 'a\r\nb\r\n\r\nc'), ('mixed', 'mixed', 'a\r\nb\n\r\nc\nd'), ] self.commitchanges(changes) self.pushrevisions() self.assertchanges(changes, self.repo['tip']) changes = [ # Update all files once, with same EOL ('lf', 'lf', 'a\nb\n\nc\na\nb\n\nc'), ('crlf', 'crlf', 'a\r\nb\r\n\r\nc\r\na\r\nb\r\n\r\nc'), ('mixed', 'mixed', 'a\r\nb\n\r\nc\nd\r\na\r\nb\n\r\nc\nd'), ] self.commitchanges(changes) self.pushrevisions() self.assertchanges(changes, self.repo['tip'])