1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
#require sqlite no-chg
The sqlitestore backend leaves transactions around when used with chg.
Since this backend is primarily intended as proof-of-concept for
alternative storage backends, disable it for chg test runs to avoid
the instability.
$ cat >> $HGRCPATH <<EOF
> [extensions]
> sqlitestore =
> EOF
New repo should not use SQLite by default
$ hg init empty-no-sqlite
$ hg debugrequires -R empty-no-sqlite
dotencode
dirstate-v2 (dirstate-v2 !)
fncache
generaldelta
persistent-nodemap (rust !)
revlog-compression-zstd (zstd !)
revlogv1
share-safe
sparserevlog
store
storage.new-repo-backend=sqlite is recognized
$ hg --config storage.new-repo-backend=sqlite init empty-sqlite
$ hg debugrequires -R empty-sqlite
dotencode
dirstate-v2 (dirstate-v2 !)
exp-sqlite-001
exp-sqlite-comp-001=zstd (zstd !)
exp-sqlite-comp-001=$BUNDLE2_COMPRESSIONS$ (no-zstd !)
fncache
generaldelta
persistent-nodemap (rust !)
revlog-compression-zstd (zstd !)
revlogv1
share-safe
sparserevlog
store
$ cat >> $HGRCPATH << EOF
> [storage]
> new-repo-backend = sqlite
> EOF
Can force compression to zlib
$ hg --config storage.sqlite.compression=zlib init empty-zlib
$ hg debugrequires -R empty-zlib
dotencode
dirstate-v2 (dirstate-v2 !)
exp-sqlite-001
exp-sqlite-comp-001=$BUNDLE2_COMPRESSIONS$
fncache
generaldelta
persistent-nodemap (rust !)
revlog-compression-zstd (zstd !)
revlogv1
share-safe
sparserevlog
store
Can force compression to none
$ hg --config storage.sqlite.compression=none init empty-none
$ hg debugrequires -R empty-none
dotencode
dirstate-v2 (dirstate-v2 !)
exp-sqlite-001
exp-sqlite-comp-001=none
fncache
generaldelta
persistent-nodemap (rust !)
revlog-compression-zstd (zstd !)
revlogv1
share-safe
sparserevlog
store
Can make a local commit
$ hg init local-commit
$ cd local-commit
$ echo 0 > foo
$ hg commit -A -m initial
adding foo
That results in a row being inserted into various tables
$ sqlite3 .hg/store/db.sqlite -init /dev/null << EOF
> SELECT * FROM filepath;
> EOF
1|foo
$ sqlite3 .hg/store/db.sqlite -init /dev/null << EOF
> SELECT * FROM fileindex;
> EOF
1|1|0|-1|-1|0|0|1||6/\xef(L\xe2\xca\x02\xae\xcc\x8d\xe6\xd5\xe8\xa1\xc3\xaf\x05V\xfe (esc)
$ sqlite3 .hg/store/db.sqlite -init /dev/null << EOF
> SELECT * FROM delta;
> EOF
1|1| \xd2\xaf\x8d\xd2"\x01\xdd\x8dH\xe5\xdc\xfc\xae\xd2\x81\xff\x94"\xc7|0 (esc)
Tracking multiple files works
$ echo 1 > bar
$ hg commit -A -m 'add bar'
adding bar
$ sqlite3 .hg/store/db.sqlite -init /dev/null << EOF
> SELECT * FROM filedata ORDER BY id ASC;
> EOF
1|1|foo|0|6/\xef(L\xe2\xca\x02\xae\xcc\x8d\xe6\xd5\xe8\xa1\xc3\xaf\x05V\xfe|-1|-1|0|0|1| (esc)
2|2|bar|0|\xb8\xe0/d3s\x80!\xa0e\xf9Au\xc7\xcd#\xdb_\x05\xbe|-1|-1|1|0|2| (esc)
Multiple revisions of a file works
$ echo a >> foo
$ hg commit -m 'modify foo'
$ sqlite3 .hg/store/db.sqlite -init /dev/null << EOF
> SELECT * FROM filedata ORDER BY id ASC;
> EOF
1|1|foo|0|6/\xef(L\xe2\xca\x02\xae\xcc\x8d\xe6\xd5\xe8\xa1\xc3\xaf\x05V\xfe|-1|-1|0|0|1| (esc)
2|2|bar|0|\xb8\xe0/d3s\x80!\xa0e\xf9Au\xc7\xcd#\xdb_\x05\xbe|-1|-1|1|0|2| (esc)
3|1|foo|1|\xdd\xb3V\xcd\xde1p@\xf7\x8e\x90\xb8*\x8b,\xe9\x0e\xd6j+|0|-1|2|0|3|1 (esc)
$ cd ..
|