Fossil SCM

When doing a clone that automatically does an open, run the "fossil open" command as a subprocess (usingn fossil_system()) to avoid problems with misconfigured database connections in the event that the clone uses the "file:" scheme. See [forum:/forumpost/b1da662b00|forum post b1da662b00] for the bug report.

drh 2021-05-14 18:52 trunk
Commit ebd604f8c7c57e773a0a7370727b57e56278ec4bae874acb151914461fe5080e
1 file changed +11 -16
+11 -16
--- src/clone.c
+++ src/clone.c
@@ -286,29 +286,24 @@
286286
fossil_print("\nproject-id: %s\n", db_get("project-code", 0));
287287
fossil_print("server-id: %s\n", db_get("server-code", 0));
288288
zPassword = db_text(0, "SELECT pw FROM user WHERE login=%Q", g.zLogin);
289289
fossil_print("admin-user: %s (password is \"%s\")\n", g.zLogin, zPassword);
290290
if( zWorkDir!=0 && zWorkDir[0]!=0 && !noOpen ){
291
- char *azNew[7];
292
- int nargs = 5;
291
+ Blob cmd;
293292
fossil_print("opening the new %s repository in directory %s...\n",
294293
zRepo, zWorkDir);
295
- azNew[0] = g.argv[0];
296
- azNew[1] = "open";
297
- azNew[2] = (char*)zRepo;
298
- azNew[3] = "--workdir";
299
- azNew[4] = (char*)zWorkDir;
294
+ blob_init(&cmd, 0, 0);
295
+ blob_append_escaped_arg(&cmd, g.nameOfExe);
296
+ blob_append(&cmd, " open ", -1);
297
+ blob_append_escaped_arg(&cmd, zRepo);
298
+ blob_append(&cmd, " --workdir ", -1);
299
+ blob_append_escaped_arg(&cmd, zWorkDir);
300300
if( allowNested ){
301
- azNew[5] = "--nested";
302
- nargs++;
303
- }else{
304
- azNew[5] = 0;
305
- }
306
- azNew[6] = 0;
307
- g.argv = azNew;
308
- g.argc = nargs;
309
- cmd_open();
301
+ blob_append(&cmd, " --nested", -1);
302
+ }
303
+ fossil_system(blob_str(&cmd));
304
+ blob_reset(&cmd);
310305
}
311306
}
312307
313308
/*
314309
** If user chooses to use HTTP Authentication over unencrypted HTTP,
315310
--- src/clone.c
+++ src/clone.c
@@ -286,29 +286,24 @@
286 fossil_print("\nproject-id: %s\n", db_get("project-code", 0));
287 fossil_print("server-id: %s\n", db_get("server-code", 0));
288 zPassword = db_text(0, "SELECT pw FROM user WHERE login=%Q", g.zLogin);
289 fossil_print("admin-user: %s (password is \"%s\")\n", g.zLogin, zPassword);
290 if( zWorkDir!=0 && zWorkDir[0]!=0 && !noOpen ){
291 char *azNew[7];
292 int nargs = 5;
293 fossil_print("opening the new %s repository in directory %s...\n",
294 zRepo, zWorkDir);
295 azNew[0] = g.argv[0];
296 azNew[1] = "open";
297 azNew[2] = (char*)zRepo;
298 azNew[3] = "--workdir";
299 azNew[4] = (char*)zWorkDir;
 
300 if( allowNested ){
301 azNew[5] = "--nested";
302 nargs++;
303 }else{
304 azNew[5] = 0;
305 }
306 azNew[6] = 0;
307 g.argv = azNew;
308 g.argc = nargs;
309 cmd_open();
310 }
311 }
312
313 /*
314 ** If user chooses to use HTTP Authentication over unencrypted HTTP,
315
--- src/clone.c
+++ src/clone.c
@@ -286,29 +286,24 @@
286 fossil_print("\nproject-id: %s\n", db_get("project-code", 0));
287 fossil_print("server-id: %s\n", db_get("server-code", 0));
288 zPassword = db_text(0, "SELECT pw FROM user WHERE login=%Q", g.zLogin);
289 fossil_print("admin-user: %s (password is \"%s\")\n", g.zLogin, zPassword);
290 if( zWorkDir!=0 && zWorkDir[0]!=0 && !noOpen ){
291 Blob cmd;
 
292 fossil_print("opening the new %s repository in directory %s...\n",
293 zRepo, zWorkDir);
294 blob_init(&cmd, 0, 0);
295 blob_append_escaped_arg(&cmd, g.nameOfExe);
296 blob_append(&cmd, " open ", -1);
297 blob_append_escaped_arg(&cmd, zRepo);
298 blob_append(&cmd, " --workdir ", -1);
299 blob_append_escaped_arg(&cmd, zWorkDir);
300 if( allowNested ){
301 blob_append(&cmd, " --nested", -1);
302 }
303 fossil_system(blob_str(&cmd));
304 blob_reset(&cmd);
 
 
 
 
 
305 }
306 }
307
308 /*
309 ** If user chooses to use HTTP Authentication over unencrypted HTTP,
310

Keyboard Shortcuts

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