Fossil SCM
Take extra care to always honor the -A option on clone, especially when cloning from a file: URI. Ticket [bcd3cdebf2879874]
Commit
d86201dce9f036591b7716bea31c29bcc3188cbf
Parent
a3717e1378a8669…
2 files changed
+5
-3
+7
-5
+5
-3
| --- src/clone.c | ||
| +++ src/clone.c | ||
| @@ -77,13 +77,15 @@ | ||
| 77 | 77 | "DELETE FROM blob WHERE rid IN private;" |
| 78 | 78 | "DELETE FROM delta wHERE rid IN private;" |
| 79 | 79 | "DELETE FROM private;" |
| 80 | 80 | ); |
| 81 | 81 | shun_artifacts(); |
| 82 | - g.zLogin = db_text(0, "SELECT login FROM user WHERE cap LIKE '%%s%%'"); | |
| 83 | - if( g.zLogin==0 ){ | |
| 84 | - db_create_default_users(1,zDefaultUser); | |
| 82 | + db_create_default_users(1, zDefaultUser); | |
| 83 | + if( zDefaultUser ){ | |
| 84 | + g.zLogin = zDefaultUser; | |
| 85 | + }else{ | |
| 86 | + g.zLogin = db_text(0, "SELECT login FROM user WHERE cap LIKE '%%s%%'"); | |
| 85 | 87 | } |
| 86 | 88 | fossil_print("Repository cloned into %s\n", g.argv[3]); |
| 87 | 89 | }else{ |
| 88 | 90 | db_create_repository(g.argv[3]); |
| 89 | 91 | db_open_repository(g.argv[3]); |
| 90 | 92 |
| --- src/clone.c | |
| +++ src/clone.c | |
| @@ -77,13 +77,15 @@ | |
| 77 | "DELETE FROM blob WHERE rid IN private;" |
| 78 | "DELETE FROM delta wHERE rid IN private;" |
| 79 | "DELETE FROM private;" |
| 80 | ); |
| 81 | shun_artifacts(); |
| 82 | g.zLogin = db_text(0, "SELECT login FROM user WHERE cap LIKE '%%s%%'"); |
| 83 | if( g.zLogin==0 ){ |
| 84 | db_create_default_users(1,zDefaultUser); |
| 85 | } |
| 86 | fossil_print("Repository cloned into %s\n", g.argv[3]); |
| 87 | }else{ |
| 88 | db_create_repository(g.argv[3]); |
| 89 | db_open_repository(g.argv[3]); |
| 90 |
| --- src/clone.c | |
| +++ src/clone.c | |
| @@ -77,13 +77,15 @@ | |
| 77 | "DELETE FROM blob WHERE rid IN private;" |
| 78 | "DELETE FROM delta wHERE rid IN private;" |
| 79 | "DELETE FROM private;" |
| 80 | ); |
| 81 | shun_artifacts(); |
| 82 | db_create_default_users(1, zDefaultUser); |
| 83 | if( zDefaultUser ){ |
| 84 | g.zLogin = zDefaultUser; |
| 85 | }else{ |
| 86 | g.zLogin = db_text(0, "SELECT login FROM user WHERE cap LIKE '%%s%%'"); |
| 87 | } |
| 88 | fossil_print("Repository cloned into %s\n", g.argv[3]); |
| 89 | }else{ |
| 90 | db_create_repository(g.argv[3]); |
| 91 | db_open_repository(g.argv[3]); |
| 92 |
M
src/db.c
+7
-5
| --- src/db.c | ||
| +++ src/db.c | ||
| @@ -1058,14 +1058,13 @@ | ||
| 1058 | 1058 | |
| 1059 | 1059 | /* |
| 1060 | 1060 | ** Create the default user accounts in the USER table. |
| 1061 | 1061 | */ |
| 1062 | 1062 | void db_create_default_users(int setupUserOnly, const char *zDefaultUser){ |
| 1063 | - const char *zUser; | |
| 1064 | - zUser = db_get("default-user", 0); | |
| 1063 | + const char *zUser = zDefaultUser; | |
| 1065 | 1064 | if( zUser==0 ){ |
| 1066 | - zUser = zDefaultUser; | |
| 1065 | + zUser = db_get("default-user", 0); | |
| 1067 | 1066 | } |
| 1068 | 1067 | if( zUser==0 ){ |
| 1069 | 1068 | #if defined(_WIN32) |
| 1070 | 1069 | zUser = getenv("USERNAME"); |
| 1071 | 1070 | #else |
| @@ -1074,12 +1073,15 @@ | ||
| 1074 | 1073 | } |
| 1075 | 1074 | if( zUser==0 ){ |
| 1076 | 1075 | zUser = "root"; |
| 1077 | 1076 | } |
| 1078 | 1077 | db_multi_exec( |
| 1079 | - "INSERT INTO user(login, pw, cap, info)" | |
| 1080 | - "VALUES(%Q,lower(hex(randomblob(3))),'s','')", zUser | |
| 1078 | + "INSERT OR IGNORE INTO user(login, info) VALUES(%Q,'')", zUser | |
| 1079 | + ); | |
| 1080 | + db_multi_exec( | |
| 1081 | + "UPDATE user SET cap='s', pw=lower(hex(randomblob(3)))" | |
| 1082 | + " WHERE login=%Q", zUser | |
| 1081 | 1083 | ); |
| 1082 | 1084 | if( !setupUserOnly ){ |
| 1083 | 1085 | db_multi_exec( |
| 1084 | 1086 | "INSERT INTO user(login,pw,cap,info)" |
| 1085 | 1087 | " VALUES('anonymous',hex(randomblob(8)),'hmncz','Anon');" |
| 1086 | 1088 |
| --- src/db.c | |
| +++ src/db.c | |
| @@ -1058,14 +1058,13 @@ | |
| 1058 | |
| 1059 | /* |
| 1060 | ** Create the default user accounts in the USER table. |
| 1061 | */ |
| 1062 | void db_create_default_users(int setupUserOnly, const char *zDefaultUser){ |
| 1063 | const char *zUser; |
| 1064 | zUser = db_get("default-user", 0); |
| 1065 | if( zUser==0 ){ |
| 1066 | zUser = zDefaultUser; |
| 1067 | } |
| 1068 | if( zUser==0 ){ |
| 1069 | #if defined(_WIN32) |
| 1070 | zUser = getenv("USERNAME"); |
| 1071 | #else |
| @@ -1074,12 +1073,15 @@ | |
| 1074 | } |
| 1075 | if( zUser==0 ){ |
| 1076 | zUser = "root"; |
| 1077 | } |
| 1078 | db_multi_exec( |
| 1079 | "INSERT INTO user(login, pw, cap, info)" |
| 1080 | "VALUES(%Q,lower(hex(randomblob(3))),'s','')", zUser |
| 1081 | ); |
| 1082 | if( !setupUserOnly ){ |
| 1083 | db_multi_exec( |
| 1084 | "INSERT INTO user(login,pw,cap,info)" |
| 1085 | " VALUES('anonymous',hex(randomblob(8)),'hmncz','Anon');" |
| 1086 |
| --- src/db.c | |
| +++ src/db.c | |
| @@ -1058,14 +1058,13 @@ | |
| 1058 | |
| 1059 | /* |
| 1060 | ** Create the default user accounts in the USER table. |
| 1061 | */ |
| 1062 | void db_create_default_users(int setupUserOnly, const char *zDefaultUser){ |
| 1063 | const char *zUser = zDefaultUser; |
| 1064 | if( zUser==0 ){ |
| 1065 | zUser = db_get("default-user", 0); |
| 1066 | } |
| 1067 | if( zUser==0 ){ |
| 1068 | #if defined(_WIN32) |
| 1069 | zUser = getenv("USERNAME"); |
| 1070 | #else |
| @@ -1074,12 +1073,15 @@ | |
| 1073 | } |
| 1074 | if( zUser==0 ){ |
| 1075 | zUser = "root"; |
| 1076 | } |
| 1077 | db_multi_exec( |
| 1078 | "INSERT OR IGNORE INTO user(login, info) VALUES(%Q,'')", zUser |
| 1079 | ); |
| 1080 | db_multi_exec( |
| 1081 | "UPDATE user SET cap='s', pw=lower(hex(randomblob(3)))" |
| 1082 | " WHERE login=%Q", zUser |
| 1083 | ); |
| 1084 | if( !setupUserOnly ){ |
| 1085 | db_multi_exec( |
| 1086 | "INSERT INTO user(login,pw,cap,info)" |
| 1087 | " VALUES('anonymous',hex(randomblob(8)),'hmncz','Anon');" |
| 1088 |