Fossil SCM

Attempt to resume a clone during the next sync or pull by tracking a failed clone operation.

andybradford 2019-10-09 14:52 trunk
Commit ec26471439ec529446d9f125a7a0761fa3cdcb971baed11fde546ab13b0af88e
2 files changed +10 -4 +19 -2
+10 -4
--- src/clone.c
+++ src/clone.c
@@ -183,10 +183,11 @@
183183
db_record_repository_filename(g.argv[3]);
184184
db_initial_setup(0, 0, zDefaultUser);
185185
user_select();
186186
db_set("content-schema", CONTENT_SCHEMA, 0);
187187
db_set("aux-schema", AUX_SCHEMA_MAX, 0);
188
+ db_set("aux-clone-incomplete", "1", 0);
188189
db_set("rebuilt", get_version(), 0);
189190
db_unset("hash-policy", 0);
190191
remember_or_get_http_auth(zHttpAuth, urlFlags & URL_REMEMBER, g.argv[2]);
191192
url_remember();
192193
if( g.zSSLIdentity!=0 ){
@@ -207,16 +208,17 @@
207208
url_get_password_if_needed();
208209
g.xlinkClusterOnly = 1;
209210
nErr = client_sync(syncFlags,CONFIGSET_ALL,0);
210211
g.xlinkClusterOnly = 0;
211212
verify_cancel();
213
+ if( nErr ){
214
+ fossil_warning("server returned an error - clone incomplete");
215
+ }else{
216
+ db_set("aux-clone-finished", "0", 0);
217
+ }
212218
db_end_transaction(0);
213219
db_close(1);
214
- if( nErr ){
215
- file_delete(g.argv[3]);
216
- fossil_fatal("server returned an error - clone aborted");
217
- }
218220
db_open_repository(g.argv[3]);
219221
}
220222
db_begin_transaction();
221223
fossil_print("Rebuilding repository meta-data...\n");
222224
rebuild_db(0, 1, 0);
@@ -234,10 +236,14 @@
234236
db_multi_exec("VACUUM");
235237
fossil_print("\nproject-id: %s\n", db_get("project-code", 0));
236238
fossil_print("server-id: %s\n", db_get("server-code", 0));
237239
zPassword = db_text(0, "SELECT pw FROM user WHERE login=%Q", g.zLogin);
238240
fossil_print("admin-user: %s (password is \"%s\")\n", g.zLogin, zPassword);
241
+ if( nErr ){
242
+ fossil_warning("clone operation had errors. "
243
+ "Run \"fossil pull\" to complete clone.");
244
+ }
239245
}
240246
241247
/*
242248
** If user chooses to use HTTP Authentication over unencrypted HTTP,
243249
** remember decision. Otherwise, if the URL is being changed and no
244250
--- src/clone.c
+++ src/clone.c
@@ -183,10 +183,11 @@
183 db_record_repository_filename(g.argv[3]);
184 db_initial_setup(0, 0, zDefaultUser);
185 user_select();
186 db_set("content-schema", CONTENT_SCHEMA, 0);
187 db_set("aux-schema", AUX_SCHEMA_MAX, 0);
 
188 db_set("rebuilt", get_version(), 0);
189 db_unset("hash-policy", 0);
190 remember_or_get_http_auth(zHttpAuth, urlFlags & URL_REMEMBER, g.argv[2]);
191 url_remember();
192 if( g.zSSLIdentity!=0 ){
@@ -207,16 +208,17 @@
207 url_get_password_if_needed();
208 g.xlinkClusterOnly = 1;
209 nErr = client_sync(syncFlags,CONFIGSET_ALL,0);
210 g.xlinkClusterOnly = 0;
211 verify_cancel();
 
 
 
 
 
212 db_end_transaction(0);
213 db_close(1);
214 if( nErr ){
215 file_delete(g.argv[3]);
216 fossil_fatal("server returned an error - clone aborted");
217 }
218 db_open_repository(g.argv[3]);
219 }
220 db_begin_transaction();
221 fossil_print("Rebuilding repository meta-data...\n");
222 rebuild_db(0, 1, 0);
@@ -234,10 +236,14 @@
234 db_multi_exec("VACUUM");
235 fossil_print("\nproject-id: %s\n", db_get("project-code", 0));
236 fossil_print("server-id: %s\n", db_get("server-code", 0));
237 zPassword = db_text(0, "SELECT pw FROM user WHERE login=%Q", g.zLogin);
238 fossil_print("admin-user: %s (password is \"%s\")\n", g.zLogin, zPassword);
 
 
 
 
239 }
240
241 /*
242 ** If user chooses to use HTTP Authentication over unencrypted HTTP,
243 ** remember decision. Otherwise, if the URL is being changed and no
244
--- src/clone.c
+++ src/clone.c
@@ -183,10 +183,11 @@
183 db_record_repository_filename(g.argv[3]);
184 db_initial_setup(0, 0, zDefaultUser);
185 user_select();
186 db_set("content-schema", CONTENT_SCHEMA, 0);
187 db_set("aux-schema", AUX_SCHEMA_MAX, 0);
188 db_set("aux-clone-incomplete", "1", 0);
189 db_set("rebuilt", get_version(), 0);
190 db_unset("hash-policy", 0);
191 remember_or_get_http_auth(zHttpAuth, urlFlags & URL_REMEMBER, g.argv[2]);
192 url_remember();
193 if( g.zSSLIdentity!=0 ){
@@ -207,16 +208,17 @@
208 url_get_password_if_needed();
209 g.xlinkClusterOnly = 1;
210 nErr = client_sync(syncFlags,CONFIGSET_ALL,0);
211 g.xlinkClusterOnly = 0;
212 verify_cancel();
213 if( nErr ){
214 fossil_warning("server returned an error - clone incomplete");
215 }else{
216 db_set("aux-clone-finished", "0", 0);
217 }
218 db_end_transaction(0);
219 db_close(1);
 
 
 
 
220 db_open_repository(g.argv[3]);
221 }
222 db_begin_transaction();
223 fossil_print("Rebuilding repository meta-data...\n");
224 rebuild_db(0, 1, 0);
@@ -234,10 +236,14 @@
236 db_multi_exec("VACUUM");
237 fossil_print("\nproject-id: %s\n", db_get("project-code", 0));
238 fossil_print("server-id: %s\n", db_get("server-code", 0));
239 zPassword = db_text(0, "SELECT pw FROM user WHERE login=%Q", g.zLogin);
240 fossil_print("admin-user: %s (password is \"%s\")\n", g.zLogin, zPassword);
241 if( nErr ){
242 fossil_warning("clone operation had errors. "
243 "Run \"fossil pull\" to complete clone.");
244 }
245 }
246
247 /*
248 ** If user chooses to use HTTP Authentication over unencrypted HTTP,
249 ** remember decision. Otherwise, if the URL is being changed and no
250
+19 -2
--- src/sync.c
+++ src/sync.c
@@ -230,19 +230,27 @@
230230
** See also: clone, config pull, push, remote-url, sync
231231
*/
232232
void pull_cmd(void){
233233
unsigned configFlags = 0;
234234
unsigned syncFlags = SYNC_PULL;
235
+ int nErr = 0;
235236
if( find_option("from-parent-project",0,0)!=0 ){
236237
syncFlags |= SYNC_FROMPARENT;
237238
}
238239
process_sync_args(&configFlags, &syncFlags, 0);
240
+ if( db_get_boolean("aux-clone-incomplete", 0) ){
241
+ syncFlags |= SYNC_RESYNC;
242
+ configFlags |= CONFIGSET_ALL;
243
+ }
239244
240245
/* We should be done with options.. */
241246
verify_all_options();
242247
243
- client_sync(syncFlags, configFlags, 0);
248
+ nErr = client_sync(syncFlags, configFlags, 0);
249
+ if( db_get_boolean("aux-clone-incomplete", 0) && nErr==0 ){
250
+ db_set("aux-clone-incomplete", "0", 0);
251
+ }
244252
}
245253
246254
/*
247255
** COMMAND: push
248256
**
@@ -321,23 +329,32 @@
321329
** See also: clone, pull, push, remote-url
322330
*/
323331
void sync_cmd(void){
324332
unsigned configFlags = 0;
325333
unsigned syncFlags = SYNC_PUSH|SYNC_PULL;
334
+ int nErr = 0;
326335
if( find_option("unversioned","u",0)!=0 ){
327336
syncFlags |= SYNC_UNVERSIONED;
328337
}
329338
process_sync_args(&configFlags, &syncFlags, 0);
339
+ if( db_get_boolean("aux-clone-incomplete", 0) ){
340
+ syncFlags |= SYNC_RESYNC;
341
+ configFlags |= CONFIGSET_ALL;
342
+ }
330343
331344
/* We should be done with options.. */
332345
verify_all_options();
333346
334347
if( db_get_boolean("dont-push",0) ) syncFlags &= ~SYNC_PUSH;
335
- client_sync(syncFlags, configFlags, 0);
348
+ nErr = client_sync(syncFlags, configFlags, 0);
336349
if( (syncFlags & SYNC_PUSH)==0 ){
337350
fossil_warning("pull only: the 'dont-push' option is set");
338351
}
352
+ if( (syncFlags & SYNC_PULL)==0 &&
353
+ db_get_boolean("aux-clone-incomplete", 0) && nErr==0 ){
354
+ db_set("aux-clone-incomplete", "0", 0);
355
+ }
339356
}
340357
341358
/*
342359
** Handle the "fossil unversioned sync" and "fossil unversioned revert"
343360
** commands.
344361
--- src/sync.c
+++ src/sync.c
@@ -230,19 +230,27 @@
230 ** See also: clone, config pull, push, remote-url, sync
231 */
232 void pull_cmd(void){
233 unsigned configFlags = 0;
234 unsigned syncFlags = SYNC_PULL;
 
235 if( find_option("from-parent-project",0,0)!=0 ){
236 syncFlags |= SYNC_FROMPARENT;
237 }
238 process_sync_args(&configFlags, &syncFlags, 0);
 
 
 
 
239
240 /* We should be done with options.. */
241 verify_all_options();
242
243 client_sync(syncFlags, configFlags, 0);
 
 
 
244 }
245
246 /*
247 ** COMMAND: push
248 **
@@ -321,23 +329,32 @@
321 ** See also: clone, pull, push, remote-url
322 */
323 void sync_cmd(void){
324 unsigned configFlags = 0;
325 unsigned syncFlags = SYNC_PUSH|SYNC_PULL;
 
326 if( find_option("unversioned","u",0)!=0 ){
327 syncFlags |= SYNC_UNVERSIONED;
328 }
329 process_sync_args(&configFlags, &syncFlags, 0);
 
 
 
 
330
331 /* We should be done with options.. */
332 verify_all_options();
333
334 if( db_get_boolean("dont-push",0) ) syncFlags &= ~SYNC_PUSH;
335 client_sync(syncFlags, configFlags, 0);
336 if( (syncFlags & SYNC_PUSH)==0 ){
337 fossil_warning("pull only: the 'dont-push' option is set");
338 }
 
 
 
 
339 }
340
341 /*
342 ** Handle the "fossil unversioned sync" and "fossil unversioned revert"
343 ** commands.
344
--- src/sync.c
+++ src/sync.c
@@ -230,19 +230,27 @@
230 ** See also: clone, config pull, push, remote-url, sync
231 */
232 void pull_cmd(void){
233 unsigned configFlags = 0;
234 unsigned syncFlags = SYNC_PULL;
235 int nErr = 0;
236 if( find_option("from-parent-project",0,0)!=0 ){
237 syncFlags |= SYNC_FROMPARENT;
238 }
239 process_sync_args(&configFlags, &syncFlags, 0);
240 if( db_get_boolean("aux-clone-incomplete", 0) ){
241 syncFlags |= SYNC_RESYNC;
242 configFlags |= CONFIGSET_ALL;
243 }
244
245 /* We should be done with options.. */
246 verify_all_options();
247
248 nErr = client_sync(syncFlags, configFlags, 0);
249 if( db_get_boolean("aux-clone-incomplete", 0) && nErr==0 ){
250 db_set("aux-clone-incomplete", "0", 0);
251 }
252 }
253
254 /*
255 ** COMMAND: push
256 **
@@ -321,23 +329,32 @@
329 ** See also: clone, pull, push, remote-url
330 */
331 void sync_cmd(void){
332 unsigned configFlags = 0;
333 unsigned syncFlags = SYNC_PUSH|SYNC_PULL;
334 int nErr = 0;
335 if( find_option("unversioned","u",0)!=0 ){
336 syncFlags |= SYNC_UNVERSIONED;
337 }
338 process_sync_args(&configFlags, &syncFlags, 0);
339 if( db_get_boolean("aux-clone-incomplete", 0) ){
340 syncFlags |= SYNC_RESYNC;
341 configFlags |= CONFIGSET_ALL;
342 }
343
344 /* We should be done with options.. */
345 verify_all_options();
346
347 if( db_get_boolean("dont-push",0) ) syncFlags &= ~SYNC_PUSH;
348 nErr = client_sync(syncFlags, configFlags, 0);
349 if( (syncFlags & SYNC_PUSH)==0 ){
350 fossil_warning("pull only: the 'dont-push' option is set");
351 }
352 if( (syncFlags & SYNC_PULL)==0 &&
353 db_get_boolean("aux-clone-incomplete", 0) && nErr==0 ){
354 db_set("aux-clone-incomplete", "0", 0);
355 }
356 }
357
358 /*
359 ** Handle the "fossil unversioned sync" and "fossil unversioned revert"
360 ** commands.
361

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button