152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
int syncFlags = SYNC_CLONE;
int noCompress = find_option("nocompress",0,0)!=0;
int noOpen = find_option("no-open",0,0)!=0;
int allowNested = find_option("nested",0,0)!=0; /* Used by open */
int nResumeSeqno = 0; /* Last seqno from which to resume clone */
const char *zNewProjCode; /* New Project code obtained during clone */
const char *zOldProjCode; /* Old project code stored in resuming clone */
const char *zRepo = 0; /* Name of the new local repository file */
const char *zWorkDir = 0; /* Open in this directory, if not zero */
/* Also clone private branches */
if( find_option("private",0,0)!=0 ) syncFlags |= SYNC_PRIVATE;
if( find_option("once",0,0)!=0) urlFlags &= ~URL_REMEMBER;
|
>
|
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
|
int syncFlags = SYNC_CLONE;
int noCompress = find_option("nocompress",0,0)!=0;
int noOpen = find_option("no-open",0,0)!=0;
int allowNested = find_option("nested",0,0)!=0; /* Used by open */
int nResumeSeqno = 0; /* Last seqno from which to resume clone */
const char *zNewProjCode; /* New Project code obtained during clone */
const char *zOldProjCode; /* Old project code stored in resuming clone */
const char *zCloneCode; /* server-code for the source of the clone */
const char *zRepo = 0; /* Name of the new local repository file */
const char *zWorkDir = 0; /* Open in this directory, if not zero */
/* Also clone private branches */
if( find_option("private",0,0)!=0 ) syncFlags |= SYNC_PRIVATE;
if( find_option("once",0,0)!=0) urlFlags &= ~URL_REMEMBER;
|
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
|
}else{
db_close_config();
if( nResumeSeqno>1 ){
db_open_repository(zRepo);
db_open_config(0,0);
db_begin_transaction();
zOldProjCode = db_get("project-code",0);
if( zOldProjCode==0 ) fossil_fatal("project-id missing from repository");
fossil_print("Resuming clone of project-id %s\n",zOldProjCode);
db_create_default_users(1, zDefaultUser);
if( zDefaultUser ) g.zLogin = zDefaultUser;
user_select();
}else{
db_create_repository(zRepo);
db_open_repository(zRepo);
|
>
>
|
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
|
}else{
db_close_config();
if( nResumeSeqno>1 ){
db_open_repository(zRepo);
db_open_config(0,0);
db_begin_transaction();
zOldProjCode = db_get("project-code",0);
zCloneCode = db_get("aux-clone-code",0);
if( zOldProjCode==0 ) fossil_fatal("project-id missing from repository");
if( zCloneCode==0 ) fossil_fatal("clone-code missing from repository");
fossil_print("Resuming clone of project-id %s\n",zOldProjCode);
db_create_default_users(1, zDefaultUser);
if( zDefaultUser ) g.zLogin = zDefaultUser;
user_select();
}else{
db_create_repository(zRepo);
db_open_repository(zRepo);
|
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
|
zNewProjCode = db_get("project-code",0);
if( zOldProjCode!=0 && zOldProjCode[0]!=0
&& fossil_strcmp(zOldProjCode, zNewProjCode)!=0 ){
fossil_fatal("project-id changed\nwas %s\nis %s"
"\nrolling back changes",
zOldProjCode, zNewProjCode);
}
}
if( nErr ){
fossil_warning("server returned an error - clone incomplete");
}else if( sync_interrupted()==1 ){
fossil_warning("clone was interrupted");
}else{
db_unprotect(PROTECT_CONFIG);
db_multi_exec("DELETE FROM config WHERE name = 'aux-clone-seqno';");
db_protect_pop();
}
db_end_transaction(0);
db_close(1);
db_open_repository(zRepo);
#if !defined(_WIN32)
signal(SIGINT, SIG_DFL);
|
>
>
>
>
>
|
>
>
|
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
|
zNewProjCode = db_get("project-code",0);
if( zOldProjCode!=0 && zOldProjCode[0]!=0
&& fossil_strcmp(zOldProjCode, zNewProjCode)!=0 ){
fossil_fatal("project-id changed\nwas %s\nis %s"
"\nrolling back changes",
zOldProjCode, zNewProjCode);
}
if( zCloneCode!=0 && zCloneCode[0]!=0
&& fossil_strcmp(zCloneCode, db_get("aux-clone-code",0))!=0 ){
fossil_fatal("clone resume from different server not allowed");
}
}
if( nErr ){
fossil_warning("server returned an error - clone incomplete");
}else if( sync_interrupted()==1 ){
fossil_warning("clone was interrupted");
}else{
db_unprotect(PROTECT_CONFIG);
db_multi_exec(
"DELETE FROM config WHERE name = 'aux-clone-seqno';"
"DELETE FROM config WHERE name = 'aux-clone-code';"
);
db_protect_pop();
}
db_end_transaction(0);
db_close(1);
db_open_repository(zRepo);
#if !defined(_WIN32)
signal(SIGINT, SIG_DFL);
|