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
SQLite format 3 @
.G�
�
� !�
�
YB � -���
�))�mviewlatest_changeslatest_changesCREATE VIEW latest_changes AS
SELECT
file_name,
file_name_id,
blob_id,
zeroblob(0) as data,
compression,
deleted,
modified_at,
noted_at,
version,
sha256_hash
FROM changes_
JOIN (
SELECT
file_name_id,
max(version) AS version
FROM changes_
GROUP BY file_name_id
) as e
USING (file_name_id, version)
�}viewchanges_changes_CREATE VIEW changes_ AS
SELECT
file_name,
file_name_id,
blob_id,
zeroblob(0) as data,
compression,
deleted,
modified_at,
noted_at,
version,
sha256_hash
FROM changes
JOIN file_names_ ON file_id = file_name_id[/{indexchanges_file_namechangesCREATE INDEX changes_file_name ON changes(file_name_id)d
)�indexrules_no_dupesrules
CREATE UNIQUE INDEX rules_no_dupes ON rules(pattern) WHERE is_active�}�QtablechangeschangesCREATE TABLE changes (
file_name_id INT NOT NULL,
blob_id INT4 NOT NULL,
version INT8 NOT NULL,
compression INT NOT NULL DEFAULT 0,
deleted BOOLEAN DEFAULT 0,
modified_at REAL NOT NULL DEFAULT (now()),
noted_at REAL NOT NULL DEFAULT (now()),
sha256_hash BLOB(32) DEFAULT (zeroblob(32)),
UNIQUE(file_name_id, version)
)- A indexsqlite_autoindex_changes_1changes �m�9tablerulesrulesCREATE TABLE rules (
id INTEGER PRIMARY KEY NOT NULL,
pattern TEXT NOT NULL,
ignored BOOLEAN NOT NULL,
compression TINYINT NOT NULL DEFAULT 0,
diff_method TINYINT NOT NULL DEFAULT 0,
conflict_method TINYINT NOT NULL DEFAULT 0,
is_active BOOL NOT NULL DEFAULT 1,
version_cap INT8,
pre_checkin_command TEXT
)
�##�viewfile_names_file_names_CREATE VIEW file_names_ AS
SELECT
COALESCE(NULLIF(parent_id, -1), id) as file_id,
file_name
FROM file_namest)!�+indexfile_name_nfidfile_namesCREATE INDEX file_name_nfid ON file_names (COALESCE(NULLIF(parent_id, -1), id))P++Ytablesqlite_sequencesqlite_sequenceCREATE TABLE sqlite_sequence(name,seq)�4!!�3tablefile_namesfile_namesCREATE TABLE file_names (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_name TEXT UNIQUE NOT NULL,
parent_id INTEGER NOT NULL DEFAULT -1
)3G! indexsqlite_autoindex_file_names_1file_names �h++�tablemirror_metadatamirror_metadataCREATE TABLE mirror_metadata (
version INT NOT NULL,
created_at REAL NOT NULL DEFAULT (now()),
rules_preallocated_size INT NOT NULL,
changes_preallocated_size INT NOT NULL
)
� ��� A��~�&A��~��A��~�Z� @
� ��� !Cargo.lock� !Cargo.toml� !src/lib.rs�
� ��� !Cargo.lock!Cargo.toml
! src/lib.rs
� � !file_names
� ���
����waN3
**/target
+ mirror*.sqlite3
**/.git
README.md
% CHANGELOG.md
# mirror-tags
5 **/Cargo.{toml,lock}
/ **/examples/**.rs
% **/src/**.rs
K ��K ; LA��#��VA��)��G�~:� l;e�<B����h<��'���c����; LA��~�fh�A��~��фi���/3�9���{�Kq75��l5�-�~
�{��9 LA��~���.A��~���C+�3�z�g�)ML��=�k3��O*�T���
� ���
d ����d��r�
**/target +mirror*.sqlite3**/.git
README.md%CHANGELOG.md#mirror-tags5**/Cargo.{toml,lock}/**/examples/**.rs% **/src/**.rs
� ���