@@ -19,10 +19,57 @@
19 19 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
20 20 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#include "config.h"
21 21 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#include "clone.h"
22 22 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#include <assert.h>
23 23 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
24 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
25 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Delete all private content from a repository.
26 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
27 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void delete_private_content(void){
28 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Bag toUndelta;
29 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Stmt q;
30 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rid;
31 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
32 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Carefule: We are about to delete all BLOB entries that are private.
33 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** So make sure that any no public BLOBs are deltas from a private BLOB.
34 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Otherwise after the deletion, we won't be able to recreate the public
35 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** BLOBs.
36 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
37 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_prepare(&q,
38 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT "
39 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " rid, (SELECT uuid FROM blob WHERE rid=delta.rid),"
40 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " srcid, (SELECT uuid FROM blob WHERE rid=delta.srcid)"
41 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " FROM delta"
42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " WHERE srcid in private AND rid NOT IN private"
43 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
44 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bag_init(&toUndelta);
45 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( db_step(&q)==SQLITE_ROW ){
46 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rid = db_column_int(&q, 0);
47 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zId = db_column_text(&q, 1);
48 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int srcid = db_column_int(&q, 2);
49 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zSrc = db_column_text(&q, 3);
50 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_warning(
51 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "public artifact %S (%d) is a delta from private artifact %S (%d)\n",
52 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zId, rid, zSrc, srcid
53 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
54 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bag_insert(&toUndelta, rid);
55 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
56 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_finalize(&q);
57 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( (rid = bag_first(&toUndelta))>0 ){
58 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ content_undelta(rid);
59 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bag_remove(&toUndelta, rid);
60 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
61 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bag_clear(&toUndelta);
62 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
63 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Now it is safe to remove all private content
64 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
65 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec(
66 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "DELETE FROM blob WHERE rid IN private;"
67 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "DELETE FROM delta wHERE rid IN private;"
68 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "DELETE FROM private;"
69 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
70 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
24 71 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
25 72 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
26 73 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
27 74 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** COMMAND: clone
28 75 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
@@ -72,15 +119,11 @@
72 119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" VALUES('server-code', lower(hex(randomblob(20))),now());"
73 120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"REPLACE INTO config(name,value,mtime)"
74 121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" VALUES('last-sync-url', '%q',now());",
75 122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.urlCanonical
76 123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
77 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_multi_exec(
78 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "DELETE FROM blob WHERE rid IN private;"
79 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "DELETE FROM delta wHERE rid IN private;"
80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "DELETE FROM private;"
81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ delete_private_content();
82 125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
shun_artifacts();
83 126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_create_default_users(1, zDefaultUser);
84 127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zDefaultUser ){
85 128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.zLogin = zDefaultUser;
86 129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
87 130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!