[[[ WC rep cache optimization for some file systems like NTFS on Windows ]]]
Hello, Please review my patch (see attached file patch.txt). It improve svn client performance on file systems like NTFS on Windows. Maybe on some other file systems, e.g. NFS, but I didn't test it. This patch switch rep cache db journal mode from DELETE (by default) to PERSISTENT. For more info about journal modes in SQLite see http://www.sqlite.org/pragma.html#pragma_journal_mode. I have tested this patch on my desktop (Core i7-2600, 16Gb, Windows 7 x64 Enterprise) for two disk drives: standard and ssd. For tests I used Subversion Benchmark Tool, see https://ctf.open.collab.net/sf/frs/do/listReleases/projects.csvn/frs.subversion_benchmark_tool. For tested application I used svn 1.8.0 from trunk, revision 1387070. Subversion Benchmark Tool tests, total results: Standard disk: svn.r1387070 - 3:05.895 svn.patch - 2:06.548 SSD disk: svn.r1387070 - 2:11.504 svn.patch - 1:38.397 For detailed results see attached files: std.180.txt, std.patch.txt, ssd.180.txt, ssd.patch.txt
Index: subversion/libsvn_subr/sqlite.c =================================================================== --- subversion/libsvn_subr/sqlite.c (revision 1387107) +++ subversion/libsvn_subr/sqlite.c (working copy) @@ -858,6 +858,12 @@ svn_sqlite__open(svn_sqlite__db_t **db, const char SVN_ERR(exec_sql(*db, "PRAGMA foreign_keys=ON;")); #endif + /* The PERSIST journaling mode is useful as an optimization on platforms + where deleting or truncating a file is much more expensive than + overwriting the first block of a file with zeros. For example + NTFS on Windows.*/ + SVN_ERR(exec_sql(*db, "PRAGMA journal_mode = PERSIST")); + /* Store temporary tables in RAM instead of in temporary files, but don't fail on this if this option is disabled in the sqlite compilation by setting SQLITE_TEMP_STORE to 0 (always to disk) */
$ svn --version -q $ svn mkdir -q --parents -m Create folder for this test run file:///d:/benchmark/repos/tests/ef842e78-5107-426a-932d-1a1bb8dec1db $ svn cp -q -m Create trunk folder for tests file:///d:/benchmark/repos/trunk file:///d:/benchmark/repos/tests/ef842e78-5107-426a-932d-1a1bb8dec1db/trunk $ svn co -q -r4 file:///d:/benchmark/repos/trunk . $ svn up -q $ svn sw -q file:///d:/benchmark/repos/tests/ef842e78-5107-426a-932d-1a1bb8dec1db/trunk $ svn pl -q -R . $ svn st -q $ svn ci -q -m Commit a few files $ svnversion $ svn rm -q -m Removing test folder file:///d:/benchmark/repos/tests/ef842e78-5107-426a-932d-1a1bb8dec1db $ svn --version -q $ svn mkdir -q --parents -m Create folder for this test run file:///d:/benchmark/repos/tests/ef66434a-0e8f-476e-9cfc-19fe1abd6464 $ svn cp -q -m Create branch folder for tests -r12 file:///d:/benchmark/repos/trunk file:///d:/benchmark/repos/tests/ef66434a-0e8f-476e-9cfc-19fe1abd6464/branch1 $ svn co -q file:///d:/benchmark/repos/tests/ef66434a-0e8f-476e-9cfc-19fe1abd6464/branch1 . $ svn merge -q file:///d:/benchmark/repos/trunk $ svn revert -q -R . $ svn ci -q -m Commit changes to branch $ svn up -q $ svn merge -q --accept=theirs-full file:///d:/benchmark/repos/trunk $ svn ci -q -m Synch up branch with trunk svn: E155015: Commit failed (details follow): svn: E155015: Aborting commit: 'D:\benchmark\ef66434a-0e8f-476e-9cfc-19fe1abd6464\notes\object-model.txt' remains in conflict $ svn sw -q file:///d:/benchmark/repos/trunk $ svn merge -q --accept=theirs-full --reintegrate file:///d:/benchmark/repos/tests/ef66434a-0e8f-476e-9cfc-19fe1abd6464/branch1 $ svn rm -q -m Removing test folder file:///d:/benchmark/repos/tests/ef66434a-0e8f-476e-9cfc-19fe1abd6464 $ svn --version -q $ svn mkdir -q --parents -m Create folder for this test run file:///d:/benchmark/repos/tests/ef329efe-c8b9-48fa-9231-a86f1bb72274 $ svn mkdir -q -m Create trunk folder to hold content file:///d:/benchmark/repos/tests/ef329efe-c8b9-48fa-9231-a86f1bb72274/main $ svn cp -q -m Copy trunk folder file:///d:/benchmark/repos/trunk file:///d:/benchmark/repos/tests/ef329efe-c8b9-48fa-9231-a86f1bb72274/main/trunk $ svn cp -q -m Copy tags folder file:///d:/benchmark/repos/tags file:///d:/benchmark/repos/tests/ef329efe-c8b9-48fa-9231-a86f1bb72274/main/tags $ svn cp -q -m Copy tags folder again file:///d:/benchmark/repos/tags file:///d:/benchmark/repos/tests/ef329efe-c8b9-48fa-9231-a86f1bb72274/main/more-tags $ svn cp -q -m Copy branches folder file:///d:/benchmark/repos/branches file:///d:/benchmark/repos/tests/ef329efe-c8b9-48fa-9231-a86f1bb72274/main/branches $ svn cp -q -m Create branch for tests file:///d:/benchmark/repos/tests/ef329efe-c8b9-48fa-9231-a86f1bb72274/main file:///d:/benchmark/repos/tests/ef329efe-c8b9-48fa-9231-a86f1bb72274/branch1 $ svn co -q file:///d:/benchmark/repos/tests/ef329efe-c8b9-48fa-9231-a86f1bb72274/main . $ svn st -q $ svn ci -q -m Commit files from WC with lots of folders $ svn up -q $ svnversion $ svn sw -q file:///d:/benchmark/repos/tests/ef329efe-c8b9-48fa-9231-a86f1bb72274/branch1 $ svn add -q d:\benchmark\ef329efe-c8b9-48fa-9231-a86f1bb72274\trunk\branch-file.txt $ svn ci -q -m Commit new file to branch $ svn up -q $ svn merge -q --accept=theirs-full file:///d:/benchmark/repos/tests/ef329efe-c8b9-48fa-9231-a86f1bb72274/main $ svn ci -q -m Synch up branch with trunk $ svn sw -q file:///d:/benchmark/repos/tests/ef329efe-c8b9-48fa-9231-a86f1bb72274/main $ svn merge -q --accept=theirs-full --reintegrate file:///d:/benchmark/repos/tests/ef329efe-c8b9-48fa-9231-a86f1bb72274/branch1 $ svn rm -q -m Removing test folder file:///d:/benchmark/repos/tests/ef329efe-c8b9-48fa-9231-a86f1bb72274 $ svn --version -q $ svn mkdir -q --parents -m Create folder for this test run file:///d:/benchmark/repos/tests/f0646d57-5a5f-465c-b118-6203fbec8fbe $ svn cp -q -m Create folder for tests -r26 file:///d:/benchmark/repos/big-tree file:///d:/benchmark/repos/tests/f0646d57-5a5f-465c-b118-6203fbec8fbe/big-tree $ svn cp -q -m Create branch for tests file:///d:/benchmark/repos/tests/f0646d57-5a5f-465c-b118-6203fbec8fbe/big-tree file:///d:/benchmark/repos/tests/f0646d57-5a5f-465c-b118-6203fbec8fbe/big-tree-branch $ svn co -q file:///d:/benchmark/repos/big-tree . $ svn up -q -r25 $ svn sw -q file:///d:/benchmark/repos/tests/f0646d57-5a5f-465c-b118-6203fbec8fbe/big-tree $ svn cleanup $ svn rm -q intl $ svn st -q $ svn ci -q -m Commit the delete of a few files $ svn mv -q places combined $ svn st -q $ svn ci -q -m Commit the moved folder $ svnversion $ svn sw -q file:///d:/benchmark/repos/tests/f0646d57-5a5f-465c-b118-6203fbec8fbe/big-tree-branch $ svn add -q d:\benchmark\f0646d57-5a5f-465c-b118-6203fbec8fbe\branch-file.txt $ svn ci -q -m Commit new file to branch $ svn up -q $ svn merge -q --accept=theirs-full file:///d:/benchmark/repos/tests/f0646d57-5a5f-465c-b118-6203fbec8fbe/big-tree $ svn ci -q -m Synch up branch with big-tree $ svn sw -q file:///d:/benchmark/repos/tests/f0646d57-5a5f-465c-b118-6203fbec8fbe/big-tree $ svn merge -q --accept=theirs-full --reintegrate file:///d:/benchmark/repos/tests/f0646d57-5a5f-465c-b118-6203fbec8fbe/big-tree-branch $ svn rm -q -m Removing test folder file:///d:/benchmark/repos/tests/f0646d57-5a5f-465c-b118-6203fbec8fbe =================== TEST RESULTS ================== SVN Version: 1.8.0-dev Tests: Basic Tests Action Time Millis ---------- --------- --------- Checkout: 0:03.573 3573 Update: 0:05.340 5340 Switch: 0:02.203 2203 Proplist: 0:00.041 41 Status: 0:00.044 44 Commit: 0:00.133 133 svnversion: 0:00.039 39 Tests: Merge Tests Action Time Millis ---------- --------- --------- Merge: 0:00.930 930 Revert: 0:00.405 405 Merge: 0:00.814 814 Reintegrate: 0:01.762 1762 Tests: Folder Tests Action Time Millis ---------- --------- --------- Checkout: 1:14.588 74588 Status: 0:00.368 368 Commit: 0:01.123 1123 Update: 0:00.786 786 svnversion: 0:00.383 383 Switch: 0:01.175 1175 Commit: 0:00.909 909 Merge: 0:00.982 982 Reintegrate: 0:01.675 1675 Tests: Binaries Tests Action Time Millis ---------- --------- --------- Checkout: 0:18.029 18029 Update: 0:03.207 3207 Switch: 0:09.501 9501 Cleanup: 0:00.563 563 Delete: 0:01.541 1541 Status: 0:00.116 116 Commit: 0:00.227 227 Rename: 0:00.185 185 Status: 0:00.100 100 Commit: 0:00.342 342 svnversion: 0:00.119 119 Switch: 0:02.723 2723 Commit: 0:00.134 134 Merge: 0:00.998 998 Reintegrate: 0:00.329 329 =================== END RESULTS ================== Total execution time: 3:05.895 185895 Results in wiki format: Basic Tests: | 1.8.0-dev | rNNNNNNNN | 0:03.573 | 0:05.340 | 0:02.203 | 0:00.041 | 0:00.044 | 0:00.133 | 0:00.039 Merge Tests: | 1.8.0-dev | rNNNNNNNN | 0:00.930 | 0:00.405 | 0:00.814 | 0:01.762 Folder Tests: | 1.8.0-dev | rNNNNNNNN | 1:14.588 | 0:00.368 | 0:01.123 | 0:00.786 | 0:00.383 | 0:01.175 | 0:00.909 | 0:00.982 | 0:01.675 Binaries Tests: | 1.8.0-dev | rNNNNNNNN | 0:18.029 | 0:03.207 | 0:09.501 | 0:00.563 | 0:01.541 | 0:00.116 | 0:00.227 | 0:00.185 | 0:00.100 | 0:00.342 | 0:00.119 | 0:02.723 | 0:00.134 | 0:00.998 | 0:00.329
$ svn --version -q $ svn mkdir -q --parents -m Create folder for this test run file:///d:/benchmark/repos/tests/73c9f171-ebb3-4711-b062-a5f0367038bd $ svn cp -q -m Create trunk folder for tests file:///d:/benchmark/repos/trunk file:///d:/benchmark/repos/tests/73c9f171-ebb3-4711-b062-a5f0367038bd/trunk $ svn co -q -r4 file:///d:/benchmark/repos/trunk . $ svn up -q $ svn sw -q file:///d:/benchmark/repos/tests/73c9f171-ebb3-4711-b062-a5f0367038bd/trunk $ svn pl -q -R . $ svn st -q $ svn ci -q -m Commit a few files $ svnversion $ svn rm -q -m Removing test folder file:///d:/benchmark/repos/tests/73c9f171-ebb3-4711-b062-a5f0367038bd $ svn --version -q $ svn mkdir -q --parents -m Create folder for this test run file:///d:/benchmark/repos/tests/8763cb50-6c7b-41da-95ee-2866a942a37b $ svn cp -q -m Create branch folder for tests -r12 file:///d:/benchmark/repos/trunk file:///d:/benchmark/repos/tests/8763cb50-6c7b-41da-95ee-2866a942a37b/branch1 $ svn co -q file:///d:/benchmark/repos/tests/8763cb50-6c7b-41da-95ee-2866a942a37b/branch1 . $ svn merge -q file:///d:/benchmark/repos/trunk $ svn revert -q -R . $ svn ci -q -m Commit changes to branch $ svn up -q $ svn merge -q --accept=theirs-full file:///d:/benchmark/repos/trunk $ svn ci -q -m Synch up branch with trunk svn: E155015: Commit failed (details follow): svn: E155015: Aborting commit: 'D:\benchmark\8763cb50-6c7b-41da-95ee-2866a942a37b\notes\object-model.txt' remains in conflict $ svn sw -q file:///d:/benchmark/repos/trunk $ svn merge -q --accept=theirs-full --reintegrate file:///d:/benchmark/repos/tests/8763cb50-6c7b-41da-95ee-2866a942a37b/branch1 $ svn rm -q -m Removing test folder file:///d:/benchmark/repos/tests/8763cb50-6c7b-41da-95ee-2866a942a37b $ svn --version -q $ svn mkdir -q --parents -m Create folder for this test run file:///d:/benchmark/repos/tests/8330a236-1f07-4d6b-a770-7e4854fda7d0 $ svn mkdir -q -m Create trunk folder to hold content file:///d:/benchmark/repos/tests/8330a236-1f07-4d6b-a770-7e4854fda7d0/main $ svn cp -q -m Copy trunk folder file:///d:/benchmark/repos/trunk file:///d:/benchmark/repos/tests/8330a236-1f07-4d6b-a770-7e4854fda7d0/main/trunk $ svn cp -q -m Copy tags folder file:///d:/benchmark/repos/tags file:///d:/benchmark/repos/tests/8330a236-1f07-4d6b-a770-7e4854fda7d0/main/tags $ svn cp -q -m Copy tags folder again file:///d:/benchmark/repos/tags file:///d:/benchmark/repos/tests/8330a236-1f07-4d6b-a770-7e4854fda7d0/main/more-tags $ svn cp -q -m Copy branches folder file:///d:/benchmark/repos/branches file:///d:/benchmark/repos/tests/8330a236-1f07-4d6b-a770-7e4854fda7d0/main/branches $ svn cp -q -m Create branch for tests file:///d:/benchmark/repos/tests/8330a236-1f07-4d6b-a770-7e4854fda7d0/main file:///d:/benchmark/repos/tests/8330a236-1f07-4d6b-a770-7e4854fda7d0/branch1 $ svn co -q file:///d:/benchmark/repos/tests/8330a236-1f07-4d6b-a770-7e4854fda7d0/main . $ svn st -q $ svn ci -q -m Commit files from WC with lots of folders $ svn up -q $ svnversion $ svn sw -q file:///d:/benchmark/repos/tests/8330a236-1f07-4d6b-a770-7e4854fda7d0/branch1 $ svn add -q d:\benchmark\8330a236-1f07-4d6b-a770-7e4854fda7d0\trunk\branch-file.txt $ svn ci -q -m Commit new file to branch $ svn up -q $ svn merge -q --accept=theirs-full file:///d:/benchmark/repos/tests/8330a236-1f07-4d6b-a770-7e4854fda7d0/main $ svn ci -q -m Synch up branch with trunk $ svn sw -q file:///d:/benchmark/repos/tests/8330a236-1f07-4d6b-a770-7e4854fda7d0/main $ svn merge -q --accept=theirs-full --reintegrate file:///d:/benchmark/repos/tests/8330a236-1f07-4d6b-a770-7e4854fda7d0/branch1 $ svn rm -q -m Removing test folder file:///d:/benchmark/repos/tests/8330a236-1f07-4d6b-a770-7e4854fda7d0 $ svn --version -q $ svn mkdir -q --parents -m Create folder for this test run file:///d:/benchmark/repos/tests/6b0754f9-55bb-4867-bd32-7f4ce89caeb7 $ svn cp -q -m Create folder for tests -r26 file:///d:/benchmark/repos/big-tree file:///d:/benchmark/repos/tests/6b0754f9-55bb-4867-bd32-7f4ce89caeb7/big-tree $ svn cp -q -m Create branch for tests file:///d:/benchmark/repos/tests/6b0754f9-55bb-4867-bd32-7f4ce89caeb7/big-tree file:///d:/benchmark/repos/tests/6b0754f9-55bb-4867-bd32-7f4ce89caeb7/big-tree-branch $ svn co -q file:///d:/benchmark/repos/big-tree . $ svn up -q -r25 $ svn sw -q file:///d:/benchmark/repos/tests/6b0754f9-55bb-4867-bd32-7f4ce89caeb7/big-tree $ svn cleanup $ svn rm -q intl $ svn st -q $ svn ci -q -m Commit the delete of a few files $ svn mv -q places combined $ svn st -q $ svn ci -q -m Commit the moved folder $ svnversion $ svn sw -q file:///d:/benchmark/repos/tests/6b0754f9-55bb-4867-bd32-7f4ce89caeb7/big-tree-branch $ svn add -q d:\benchmark\6b0754f9-55bb-4867-bd32-7f4ce89caeb7\branch-file.txt $ svn ci -q -m Commit new file to branch $ svn up -q $ svn merge -q --accept=theirs-full file:///d:/benchmark/repos/tests/6b0754f9-55bb-4867-bd32-7f4ce89caeb7/big-tree $ svn ci -q -m Synch up branch with big-tree $ svn sw -q file:///d:/benchmark/repos/tests/6b0754f9-55bb-4867-bd32-7f4ce89caeb7/big-tree $ svn merge -q --accept=theirs-full --reintegrate file:///d:/benchmark/repos/tests/6b0754f9-55bb-4867-bd32-7f4ce89caeb7/big-tree-branch $ svn rm -q -m Removing test folder file:///d:/benchmark/repos/tests/6b0754f9-55bb-4867-bd32-7f4ce89caeb7 =================== TEST RESULTS ================== SVN Version: 1.8.0-dev Tests: Basic Tests Action Time Millis ---------- --------- --------- Checkout: 0:02.152 2152 Update: 0:02.195 2195 Switch: 0:02.035 2035 Proplist: 0:00.043 43 Status: 0:00.053 53 Commit: 0:00.114 114 svnversion: 0:00.038 38 Tests: Merge Tests Action Time Millis ---------- --------- --------- Merge: 0:00.708 708 Revert: 0:00.310 310 Merge: 0:00.719 719 Reintegrate: 0:01.773 1773 Tests: Folder Tests Action Time Millis ---------- --------- --------- Checkout: 0:44.139 44139 Status: 0:00.441 441 Commit: 0:01.670 1670 Update: 0:00.776 776 svnversion: 0:00.385 385 Switch: 0:01.109 1109 Commit: 0:00.436 436 Merge: 0:01.026 1026 Reintegrate: 0:01.596 1596 Tests: Binaries Tests Action Time Millis ---------- --------- --------- Checkout: 0:08.747 8747 Update: 0:00.822 822 Switch: 0:05.971 5971 Cleanup: 0:00.522 522 Delete: 0:00.588 588 Status: 0:00.162 162 Commit: 0:00.177 177 Rename: 0:00.112 112 Status: 0:00.133 133 Commit: 0:00.182 182 svnversion: 0:00.119 119 Switch: 0:01.500 1500 Commit: 0:00.152 152 Merge: 0:00.806 806 Reintegrate: 0:00.332 332 =================== END RESULTS ================== Total execution time: 2:06.548 126548 Results in wiki format: Basic Tests: | 1.8.0-dev | rNNNNNNNN | 0:02.152 | 0:02.195 | 0:02.035 | 0:00.043 | 0:00.053 | 0:00.114 | 0:00.038 Merge Tests: | 1.8.0-dev | rNNNNNNNN | 0:00.708 | 0:00.310 | 0:00.719 | 0:01.773 Folder Tests: | 1.8.0-dev | rNNNNNNNN | 0:44.139 | 0:00.441 | 0:01.670 | 0:00.776 | 0:00.385 | 0:01.109 | 0:00.436 | 0:01.026 | 0:01.596 Binaries Tests: | 1.8.0-dev | rNNNNNNNN | 0:08.747 | 0:00.822 | 0:05.971 | 0:00.522 | 0:00.588 | 0:00.162 | 0:00.177 | 0:00.112 | 0:00.133 | 0:00.182 | 0:00.119 | 0:01.500 | 0:00.152 | 0:00.806 | 0:00.332
$ svn --version -q $ svn mkdir -q --parents -m Create folder for this test run file:///c:/benchmark/repos/tests/633502e2-5e37-4437-90c7-0d76aca34fd7 $ svn cp -q -m Create trunk folder for tests file:///c:/benchmark/repos/trunk file:///c:/benchmark/repos/tests/633502e2-5e37-4437-90c7-0d76aca34fd7/trunk $ svn co -q -r4 file:///c:/benchmark/repos/trunk . $ svn up -q $ svn sw -q file:///c:/benchmark/repos/tests/633502e2-5e37-4437-90c7-0d76aca34fd7/trunk $ svn pl -q -R . $ svn st -q $ svn ci -q -m Commit a few files $ svnversion $ svn rm -q -m Removing test folder file:///c:/benchmark/repos/tests/633502e2-5e37-4437-90c7-0d76aca34fd7 $ svn --version -q $ svn mkdir -q --parents -m Create folder for this test run file:///c:/benchmark/repos/tests/14a9e7ea-c96f-4c1d-8933-26503dffd9e2 $ svn cp -q -m Create branch folder for tests -r12 file:///c:/benchmark/repos/trunk file:///c:/benchmark/repos/tests/14a9e7ea-c96f-4c1d-8933-26503dffd9e2/branch1 $ svn co -q file:///c:/benchmark/repos/tests/14a9e7ea-c96f-4c1d-8933-26503dffd9e2/branch1 . $ svn merge -q file:///c:/benchmark/repos/trunk $ svn revert -q -R . $ svn ci -q -m Commit changes to branch $ svn up -q $ svn merge -q --accept=theirs-full file:///c:/benchmark/repos/trunk $ svn ci -q -m Synch up branch with trunk svn: E155015: Commit failed (details follow): svn: E155015: Aborting commit: 'C:\benchmark\14a9e7ea-c96f-4c1d-8933-26503dffd9e2\notes\object-model.txt' remains in conflict $ svn sw -q file:///c:/benchmark/repos/trunk $ svn merge -q --accept=theirs-full --reintegrate file:///c:/benchmark/repos/tests/14a9e7ea-c96f-4c1d-8933-26503dffd9e2/branch1 $ svn rm -q -m Removing test folder file:///c:/benchmark/repos/tests/14a9e7ea-c96f-4c1d-8933-26503dffd9e2 $ svn --version -q $ svn mkdir -q --parents -m Create folder for this test run file:///c:/benchmark/repos/tests/49ae9e34-2f99-4b33-8e50-11a82e6b8ead $ svn mkdir -q -m Create trunk folder to hold content file:///c:/benchmark/repos/tests/49ae9e34-2f99-4b33-8e50-11a82e6b8ead/main $ svn cp -q -m Copy trunk folder file:///c:/benchmark/repos/trunk file:///c:/benchmark/repos/tests/49ae9e34-2f99-4b33-8e50-11a82e6b8ead/main/trunk $ svn cp -q -m Copy tags folder file:///c:/benchmark/repos/tags file:///c:/benchmark/repos/tests/49ae9e34-2f99-4b33-8e50-11a82e6b8ead/main/tags $ svn cp -q -m Copy tags folder again file:///c:/benchmark/repos/tags file:///c:/benchmark/repos/tests/49ae9e34-2f99-4b33-8e50-11a82e6b8ead/main/more-tags $ svn cp -q -m Copy branches folder file:///c:/benchmark/repos/branches file:///c:/benchmark/repos/tests/49ae9e34-2f99-4b33-8e50-11a82e6b8ead/main/branches $ svn cp -q -m Create branch for tests file:///c:/benchmark/repos/tests/49ae9e34-2f99-4b33-8e50-11a82e6b8ead/main file:///c:/benchmark/repos/tests/49ae9e34-2f99-4b33-8e50-11a82e6b8ead/branch1 $ svn co -q file:///c:/benchmark/repos/tests/49ae9e34-2f99-4b33-8e50-11a82e6b8ead/main . $ svn st -q $ svn ci -q -m Commit files from WC with lots of folders $ svn up -q $ svnversion $ svn sw -q file:///c:/benchmark/repos/tests/49ae9e34-2f99-4b33-8e50-11a82e6b8ead/branch1 $ svn add -q c:\benchmark\49ae9e34-2f99-4b33-8e50-11a82e6b8ead\trunk\branch-file.txt $ svn ci -q -m Commit new file to branch $ svn up -q $ svn merge -q --accept=theirs-full file:///c:/benchmark/repos/tests/49ae9e34-2f99-4b33-8e50-11a82e6b8ead/main $ svn ci -q -m Synch up branch with trunk $ svn sw -q file:///c:/benchmark/repos/tests/49ae9e34-2f99-4b33-8e50-11a82e6b8ead/main $ svn merge -q --accept=theirs-full --reintegrate file:///c:/benchmark/repos/tests/49ae9e34-2f99-4b33-8e50-11a82e6b8ead/branch1 $ svn rm -q -m Removing test folder file:///c:/benchmark/repos/tests/49ae9e34-2f99-4b33-8e50-11a82e6b8ead $ svn --version -q $ svn mkdir -q --parents -m Create folder for this test run file:///c:/benchmark/repos/tests/80452c19-a638-42e1-88aa-5d21b95513d3 $ svn cp -q -m Create folder for tests -r26 file:///c:/benchmark/repos/big-tree file:///c:/benchmark/repos/tests/80452c19-a638-42e1-88aa-5d21b95513d3/big-tree $ svn cp -q -m Create branch for tests file:///c:/benchmark/repos/tests/80452c19-a638-42e1-88aa-5d21b95513d3/big-tree file:///c:/benchmark/repos/tests/80452c19-a638-42e1-88aa-5d21b95513d3/big-tree-branch $ svn co -q file:///c:/benchmark/repos/big-tree . $ svn up -q -r25 $ svn sw -q file:///c:/benchmark/repos/tests/80452c19-a638-42e1-88aa-5d21b95513d3/big-tree $ svn cleanup $ svn rm -q intl $ svn st -q $ svn ci -q -m Commit the delete of a few files $ svn mv -q places combined $ svn st -q $ svn ci -q -m Commit the moved folder $ svnversion $ svn sw -q file:///c:/benchmark/repos/tests/80452c19-a638-42e1-88aa-5d21b95513d3/big-tree-branch $ svn add -q c:\benchmark\80452c19-a638-42e1-88aa-5d21b95513d3\branch-file.txt $ svn ci -q -m Commit new file to branch $ svn up -q $ svn merge -q --accept=theirs-full file:///c:/benchmark/repos/tests/80452c19-a638-42e1-88aa-5d21b95513d3/big-tree $ svn ci -q -m Synch up branch with big-tree $ svn sw -q file:///c:/benchmark/repos/tests/80452c19-a638-42e1-88aa-5d21b95513d3/big-tree $ svn merge -q --accept=theirs-full --reintegrate file:///c:/benchmark/repos/tests/80452c19-a638-42e1-88aa-5d21b95513d3/big-tree-branch $ svn rm -q -m Removing test folder file:///c:/benchmark/repos/tests/80452c19-a638-42e1-88aa-5d21b95513d3 =================== TEST RESULTS ================== SVN Version: 1.8.0-dev Tests: Basic Tests Action Time Millis ---------- --------- --------- Checkout: 0:04.174 4174 Update: 0:03.670 3670 Switch: 0:03.597 3597 Proplist: 0:00.041 41 Status: 0:00.049 49 Commit: 0:00.114 114 svnversion: 0:00.055 55 Tests: Merge Tests Action Time Millis ---------- --------- --------- Merge: 0:00.952 952 Revert: 0:00.534 534 Merge: 0:00.996 996 Reintegrate: 0:01.797 1797 Tests: Folder Tests Action Time Millis ---------- --------- --------- Checkout: 0:50.407 50407 Status: 0:00.416 416 Commit: 0:01.005 1005 Update: 0:00.856 856 svnversion: 0:00.568 568 Switch: 0:01.316 1316 Commit: 0:00.416 416 Merge: 0:01.132 1132 Reintegrate: 0:01.963 1963 Tests: Binaries Tests Action Time Millis ---------- --------- --------- Checkout: 0:16.675 16675 Update: 0:02.089 2089 Switch: 0:09.821 9821 Cleanup: 0:00.777 777 Delete: 0:00.106 106 Status: 0:00.131 131 Commit: 0:00.114 114 Rename: 0:00.234 234 Status: 0:00.108 108 Commit: 0:00.156 156 svnversion: 0:00.176 176 Switch: 0:02.071 2071 Commit: 0:00.132 132 Merge: 0:01.165 1165 Reintegrate: 0:00.390 390 =================== END RESULTS ================== Total execution time: 2:11.504 131504 Results in wiki format: Basic Tests: | 1.8.0-dev | rNNNNNNNN | 0:04.174 | 0:03.670 | 0:03.597 | 0:00.041 | 0:00.049 | 0:00.114 | 0:00.055 Merge Tests: | 1.8.0-dev | rNNNNNNNN | 0:00.952 | 0:00.534 | 0:00.996 | 0:01.797 Folder Tests: | 1.8.0-dev | rNNNNNNNN | 0:50.407 | 0:00.416 | 0:01.005 | 0:00.856 | 0:00.568 | 0:01.316 | 0:00.416 | 0:01.132 | 0:01.963 Binaries Tests: | 1.8.0-dev | rNNNNNNNN | 0:16.675 | 0:02.089 | 0:09.821 | 0:00.777 | 0:00.106 | 0:00.131 | 0:00.114 | 0:00.234 | 0:00.108 | 0:00.156 | 0:00.176 | 0:02.071 | 0:00.132 | 0:01.165 | 0:00.390
$ svn --version -q $ svn mkdir -q --parents -m Create folder for this test run file:///c:/benchmark/repos/tests/4d6b170a-38f6-4b18-bb67-dcdd72500d9f $ svn cp -q -m Create trunk folder for tests file:///c:/benchmark/repos/trunk file:///c:/benchmark/repos/tests/4d6b170a-38f6-4b18-bb67-dcdd72500d9f/trunk $ svn co -q -r4 file:///c:/benchmark/repos/trunk . $ svn up -q $ svn sw -q file:///c:/benchmark/repos/tests/4d6b170a-38f6-4b18-bb67-dcdd72500d9f/trunk $ svn pl -q -R . $ svn st -q $ svn ci -q -m Commit a few files $ svnversion $ svn rm -q -m Removing test folder file:///c:/benchmark/repos/tests/4d6b170a-38f6-4b18-bb67-dcdd72500d9f $ svn --version -q $ svn mkdir -q --parents -m Create folder for this test run file:///c:/benchmark/repos/tests/acb486d2-5e41-4efd-981f-0312d85f3036 $ svn cp -q -m Create branch folder for tests -r12 file:///c:/benchmark/repos/trunk file:///c:/benchmark/repos/tests/acb486d2-5e41-4efd-981f-0312d85f3036/branch1 $ svn co -q file:///c:/benchmark/repos/tests/acb486d2-5e41-4efd-981f-0312d85f3036/branch1 . $ svn merge -q file:///c:/benchmark/repos/trunk $ svn revert -q -R . $ svn ci -q -m Commit changes to branch $ svn up -q $ svn merge -q --accept=theirs-full file:///c:/benchmark/repos/trunk $ svn ci -q -m Synch up branch with trunk svn: E155015: Commit failed (details follow): svn: E155015: Aborting commit: 'C:\benchmark\acb486d2-5e41-4efd-981f-0312d85f3036\notes\object-model.txt' remains in conflict $ svn sw -q file:///c:/benchmark/repos/trunk $ svn merge -q --accept=theirs-full --reintegrate file:///c:/benchmark/repos/tests/acb486d2-5e41-4efd-981f-0312d85f3036/branch1 $ svn rm -q -m Removing test folder file:///c:/benchmark/repos/tests/acb486d2-5e41-4efd-981f-0312d85f3036 $ svn --version -q $ svn mkdir -q --parents -m Create folder for this test run file:///c:/benchmark/repos/tests/b2f010f2-5e6b-4077-a165-8ef4784c6dd6 $ svn mkdir -q -m Create trunk folder to hold content file:///c:/benchmark/repos/tests/b2f010f2-5e6b-4077-a165-8ef4784c6dd6/main $ svn cp -q -m Copy trunk folder file:///c:/benchmark/repos/trunk file:///c:/benchmark/repos/tests/b2f010f2-5e6b-4077-a165-8ef4784c6dd6/main/trunk $ svn cp -q -m Copy tags folder file:///c:/benchmark/repos/tags file:///c:/benchmark/repos/tests/b2f010f2-5e6b-4077-a165-8ef4784c6dd6/main/tags $ svn cp -q -m Copy tags folder again file:///c:/benchmark/repos/tags file:///c:/benchmark/repos/tests/b2f010f2-5e6b-4077-a165-8ef4784c6dd6/main/more-tags $ svn cp -q -m Copy branches folder file:///c:/benchmark/repos/branches file:///c:/benchmark/repos/tests/b2f010f2-5e6b-4077-a165-8ef4784c6dd6/main/branches $ svn cp -q -m Create branch for tests file:///c:/benchmark/repos/tests/b2f010f2-5e6b-4077-a165-8ef4784c6dd6/main file:///c:/benchmark/repos/tests/b2f010f2-5e6b-4077-a165-8ef4784c6dd6/branch1 $ svn co -q file:///c:/benchmark/repos/tests/b2f010f2-5e6b-4077-a165-8ef4784c6dd6/main . $ svn st -q $ svn ci -q -m Commit files from WC with lots of folders $ svn up -q $ svnversion $ svn sw -q file:///c:/benchmark/repos/tests/b2f010f2-5e6b-4077-a165-8ef4784c6dd6/branch1 $ svn add -q c:\benchmark\b2f010f2-5e6b-4077-a165-8ef4784c6dd6\trunk\branch-file.txt $ svn ci -q -m Commit new file to branch $ svn up -q $ svn merge -q --accept=theirs-full file:///c:/benchmark/repos/tests/b2f010f2-5e6b-4077-a165-8ef4784c6dd6/main $ svn ci -q -m Synch up branch with trunk $ svn sw -q file:///c:/benchmark/repos/tests/b2f010f2-5e6b-4077-a165-8ef4784c6dd6/main $ svn merge -q --accept=theirs-full --reintegrate file:///c:/benchmark/repos/tests/b2f010f2-5e6b-4077-a165-8ef4784c6dd6/branch1 $ svn rm -q -m Removing test folder file:///c:/benchmark/repos/tests/b2f010f2-5e6b-4077-a165-8ef4784c6dd6 $ svn --version -q $ svn mkdir -q --parents -m Create folder for this test run file:///c:/benchmark/repos/tests/9e5d6e4e-9461-49ee-889b-0e505b0e3d43 $ svn cp -q -m Create folder for tests -r26 file:///c:/benchmark/repos/big-tree file:///c:/benchmark/repos/tests/9e5d6e4e-9461-49ee-889b-0e505b0e3d43/big-tree $ svn cp -q -m Create branch for tests file:///c:/benchmark/repos/tests/9e5d6e4e-9461-49ee-889b-0e505b0e3d43/big-tree file:///c:/benchmark/repos/tests/9e5d6e4e-9461-49ee-889b-0e505b0e3d43/big-tree-branch $ svn co -q file:///c:/benchmark/repos/big-tree . $ svn up -q -r25 $ svn sw -q file:///c:/benchmark/repos/tests/9e5d6e4e-9461-49ee-889b-0e505b0e3d43/big-tree $ svn cleanup $ svn rm -q intl $ svn st -q $ svn ci -q -m Commit the delete of a few files $ svn mv -q places combined $ svn st -q $ svn ci -q -m Commit the moved folder $ svnversion $ svn sw -q file:///c:/benchmark/repos/tests/9e5d6e4e-9461-49ee-889b-0e505b0e3d43/big-tree-branch $ svn add -q c:\benchmark\9e5d6e4e-9461-49ee-889b-0e505b0e3d43\branch-file.txt $ svn ci -q -m Commit new file to branch $ svn up -q $ svn merge -q --accept=theirs-full file:///c:/benchmark/repos/tests/9e5d6e4e-9461-49ee-889b-0e505b0e3d43/big-tree $ svn ci -q -m Synch up branch with big-tree $ svn sw -q file:///c:/benchmark/repos/tests/9e5d6e4e-9461-49ee-889b-0e505b0e3d43/big-tree $ svn merge -q --accept=theirs-full --reintegrate file:///c:/benchmark/repos/tests/9e5d6e4e-9461-49ee-889b-0e505b0e3d43/big-tree-branch $ svn rm -q -m Removing test folder file:///c:/benchmark/repos/tests/9e5d6e4e-9461-49ee-889b-0e505b0e3d43 =================== TEST RESULTS ================== SVN Version: 1.8.0-dev Tests: Basic Tests Action Time Millis ---------- --------- --------- Checkout: 0:02.513 2513 Update: 0:02.659 2659 Switch: 0:01.942 1942 Proplist: 0:00.042 42 Status: 0:00.059 59 Commit: 0:00.102 102 svnversion: 0:00.055 55 Tests: Merge Tests Action Time Millis ---------- --------- --------- Merge: 0:00.800 800 Revert: 0:00.440 440 Merge: 0:02.645 2645 Reintegrate: 0:02.036 2036 Tests: Folder Tests Action Time Millis ---------- --------- --------- Checkout: 0:35.601 35601 Status: 0:00.557 557 Commit: 0:00.992 992 Update: 0:00.844 844 svnversion: 0:00.606 606 Switch: 0:01.194 1194 Commit: 0:00.406 406 Merge: 0:01.001 1001 Reintegrate: 0:01.923 1923 Tests: Binaries Tests Action Time Millis ---------- --------- --------- Checkout: 0:09.129 9129 Update: 0:00.948 948 Switch: 0:06.167 6167 Cleanup: 0:00.764 764 Delete: 0:00.185 185 Status: 0:00.210 210 Commit: 0:00.113 113 Rename: 0:00.120 120 Status: 0:00.159 159 Commit: 0:00.146 146 svnversion: 0:00.183 183 Switch: 0:01.373 1373 Commit: 0:00.098 98 Merge: 0:00.889 889 Reintegrate: 0:00.405 405 =================== END RESULTS ================== Total execution time: 1:38.397 98397 Results in wiki format: Basic Tests: | 1.8.0-dev | rNNNNNNNN | 0:02.513 | 0:02.659 | 0:01.942 | 0:00.042 | 0:00.059 | 0:00.102 | 0:00.055 Merge Tests: | 1.8.0-dev | rNNNNNNNN | 0:00.800 | 0:00.440 | 0:02.645 | 0:02.036 Folder Tests: | 1.8.0-dev | rNNNNNNNN | 0:35.601 | 0:00.557 | 0:00.992 | 0:00.844 | 0:00.606 | 0:01.194 | 0:00.406 | 0:01.001 | 0:01.923 Binaries Tests: | 1.8.0-dev | rNNNNNNNN | 0:09.129 | 0:00.948 | 0:06.167 | 0:00.764 | 0:00.185 | 0:00.210 | 0:00.113 | 0:00.120 | 0:00.159 | 0:00.146 | 0:00.183 | 0:01.373 | 0:00.098 | 0:00.889 | 0:00.405