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.
Commit
ebd604f8c7c57e773a0a7370727b57e56278ec4bae874acb151914461fe5080e
Parent
380aa578a8ecbc9…
1 file changed
+11
-16
+11
-16
| --- src/clone.c | ||
| +++ src/clone.c | ||
| @@ -286,29 +286,24 @@ | ||
| 286 | 286 | fossil_print("\nproject-id: %s\n", db_get("project-code", 0)); |
| 287 | 287 | fossil_print("server-id: %s\n", db_get("server-code", 0)); |
| 288 | 288 | zPassword = db_text(0, "SELECT pw FROM user WHERE login=%Q", g.zLogin); |
| 289 | 289 | fossil_print("admin-user: %s (password is \"%s\")\n", g.zLogin, zPassword); |
| 290 | 290 | if( zWorkDir!=0 && zWorkDir[0]!=0 && !noOpen ){ |
| 291 | - char *azNew[7]; | |
| 292 | - int nargs = 5; | |
| 291 | + Blob cmd; | |
| 293 | 292 | fossil_print("opening the new %s repository in directory %s...\n", |
| 294 | 293 | 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); | |
| 300 | 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(); | |
| 301 | + blob_append(&cmd, " --nested", -1); | |
| 302 | + } | |
| 303 | + fossil_system(blob_str(&cmd)); | |
| 304 | + blob_reset(&cmd); | |
| 310 | 305 | } |
| 311 | 306 | } |
| 312 | 307 | |
| 313 | 308 | /* |
| 314 | 309 | ** If user chooses to use HTTP Authentication over unencrypted HTTP, |
| 315 | 310 |
| --- 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 |