Hi all,
I've been experimenting with various big repositories and efficient
repository conversions. One of the somewhat surprising findings was that
adding the vendor branches for the NetBSD repository bumped the size
from 2.2GB to 3GB. I've attached an experimental patch to reduce it to the
original size. It is relatively dumb and can certainly be improved.
Also attached is the runtime of fossil open before and after for
comparison.
Joerg
CHANGED src/content.c
Index: src/content.c
===================================================================
--- src/content.c
+++ src/content.c
@@ -758,10 +758,45 @@
*/
void test_content_deltify_cmd(void){
if( g.argc!=5 ) usage("RID SRCID FORCE");
db_must_be_within_tree();
content_deltify(atoi(g.argv[2]), atoi(g.argv[3]), atoi(g.argv[4]));
+}
+
+/*
+** COMMAND: test-all-deltas
+**
+** Try more aggressively to create cross-branch deltas.
+**/
+void test_all_deltas(void){
+ Stmt q;
+ db_find_and_open_repository(OPEN_ANY_SCHEMA, 2);
+ char filename[1024];
+ int refrid;
+ int step;
+
+ db_begin_transaction();
+ *filename = 0;
+ db_prepare(&q, "SELECT filename.name, mlink.fid FROM mlink, filename"
+ " WHERE NOT EXISTS(SELECT 1 FROM delta WHERE rid=fid)"
+ " AND mlink.fnid=filename.fnid"
+ " ORDER BY filename.name, -mlink.fid");
+ step = 0;
+ while( db_step(&q)==SQLITE_ROW ){
+ const char *curfile = db_column_text(&q, 0);
+ int rid = db_column_int(&q, 1);
+ if (strcmp(curfile, filename)) {
+ strcpy(filename, curfile);
+ refrid = rid;
+ continue;
+ }
+ content_deltify(rid, refrid, 0);
+ if (++step % 100 == 0) fprintf(stderr, ".");
+ }
+ fprintf(stderr, "\n");
+ db_finalize(&q);
+ db_end_transaction(0);
}
/*
** COMMAND: test-integrity
**
Before:
trunk
real 0m36.977s
user 0m31.220s
sys 0m5.590s
real 0m36.787s
user 0m31.030s
sys 0m5.640s
real 0m36.892s
user 0m30.720s
sys 0m6.030s
netbsd-1-6
real 0m21.366s
user 0m18.370s
sys 0m2.920s
real 0m21.460s
user 0m18.330s
sys 0m3.050s
real 0m21.274s
user 0m18.280s
sys 0m2.920s
After:
trunk
real 0m38.953s
user 0m33.020s
sys 0m5.790s
real 0m39.213s
user 0m32.940s
sys 0m6.140s
real 0m38.972s
user 0m32.680s
sys 0m6.150s
netbsd-1-6
real 0m22.490s
user 0m19.490s
sys 0m2.920s
real 0m22.613s
user 0m19.590s
sys 0m2.940s
real 0m22.580s
user 0m19.740s
sys 0m2.760s
_______________________________________________
fossil-users mailing list
[email protected]
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users