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

Reply via email to