[[[
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