Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Add the "all rebuild" subcommand. Be more aggressive about adding repositories to the repository list. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
2bd0690fe8d58ec4a0cbca48f76c1e1f |
| User & Date: | drh 2008-10-17 12:31:26.000 |
Context
|
2008-10-17
| ||
| 13:30 | Update the "info" command so that it can take the name of a repository as its argument and then report information about that repository. check-in: 974f025c6e user: drh tags: trunk | |
| 12:31 | Add the "all rebuild" subcommand. Be more aggressive about adding repositories to the repository list. check-in: 2bd0690fe8 user: drh tags: trunk | |
| 00:21 | Fix a minor problem in the previous check-in. check-in: 02eabf94e5 user: drh tags: trunk | |
Changes
Changes to src/allrepo.c.
| ︙ | ︙ | |||
60 61 62 63 64 65 66 | ** Usage: %fossil add (list|pull|push|sync) ** ** The ~/.fossil file records the location of all repositories for a ** user. This command performs certain operations on all repositories ** that can be useful before or after a period of disconnection operation. ** Available operations are: ** | | | | > > | > > > > | < < | | > > | > > | < | 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
** Usage: %fossil add (list|pull|push|sync)
**
** The ~/.fossil file records the location of all repositories for a
** user. This command performs certain operations on all repositories
** that can be useful before or after a period of disconnection operation.
** Available operations are:
**
** list Display the location of all repositories
**
** pull Run a "pull" operation on all repositories
**
** push Run a "push" on all repositories
**
** rebuild Rebuild on all repositories
**
** sync Run a "sync" on all repositories
**
** Respositories are automatically added to the set of known repositories
** when one of the following commands against the repository: clone, info,
** pull, push, or sync
*/
void all_cmd(void){
int n;
Stmt q;
const char *zCmd;
char *zSyscmd;
char *zFossil;
char *zQFilename;
int nMissing;
if( g.argc<3 ){
usage("list|pull|push|rebuild|sync");
}
n = strlen(g.argv[2]);
db_open_config();
zCmd = g.argv[2];
if( strncmp(zCmd, "list", n)==0 ){
zCmd = "list";
}else if( strncmp(zCmd, "push", n)==0 ){
zCmd = "push -autourl -R";
}else if( strncmp(zCmd, "pull", n)==0 ){
zCmd = "pull -autourl -R";
}else if( strncmp(zCmd, "rebuild", n)==0 ){
zCmd = "rebuild";
}else if( strncmp(zCmd, "sync", n)==0 ){
zCmd = "sync -autourl -R";
}else{
fossil_fatal("\"all\" subcommand should be one of: "
"list push pull sync");
}
zFossil = quoteFilename(g.argv[0]);
nMissing = 0;
db_prepare(&q, "SELECT substr(name, 6) FROM global_config"
" WHERE substr(name, 1, 5)=='repo:' ORDER BY 1");
while( db_step(&q)==SQLITE_ROW ){
const char *zFilename = db_column_text(&q, 0);
if( access(zFilename, 0) ){
nMissing++;
continue;
}
if( zCmd[0]=='l' ){
printf("%s\n", zFilename);
continue;
}
zQFilename = quoteFilename(zFilename);
zSyscmd = mprintf("%s %s %s", zFossil, zCmd, zQFilename);
printf("%s\n", zSyscmd);
fflush(stdout);
system(zSyscmd);
free(zSyscmd);
free(zQFilename);
}
|
| ︙ | ︙ | |||
133 134 135 136 137 138 139 |
const char *zFilename = db_column_text(&q, 0);
if( access(zFilename, 0) ){
char *zRepo = mprintf("repo:%s", zFilename);
db_unset(zRepo, 1);
free(zRepo);
}
}
| | > | 140 141 142 143 144 145 146 147 148 149 150 151 |
const char *zFilename = db_column_text(&q, 0);
if( access(zFilename, 0) ){
char *zRepo = mprintf("repo:%s", zFilename);
db_unset(zRepo, 1);
free(zRepo);
}
}
db_reset(&q);
db_end_transaction(0);
}
db_finalize(&q);
}
|
Changes to src/clone.c.
| ︙ | ︙ | |||
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
fossil_panic("file already exists: %s", g.argv[3]);
}
url_parse(g.argv[2]);
if( g.urlIsFile ){
file_copy(g.urlName, g.argv[3]);
db_close();
db_open_repository(g.argv[3]);
db_multi_exec(
"REPLACE INTO config(name,value)"
" VALUES('server-code', lower(hex(randomblob(20))));"
);
printf("Repository cloned into %s\n", g.argv[3]);
}else{
db_create_repository(g.argv[3]);
db_open_repository(g.argv[3]);
db_begin_transaction();
db_initial_setup(0, 0);
user_select();
db_set("content-schema", CONTENT_SCHEMA, 0);
db_set("aux-schema", AUX_SCHEMA, 0);
db_set("last-sync-url", g.argv[2], 0);
db_multi_exec(
"REPLACE INTO config(name,value)"
| > > | 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
fossil_panic("file already exists: %s", g.argv[3]);
}
url_parse(g.argv[2]);
if( g.urlIsFile ){
file_copy(g.urlName, g.argv[3]);
db_close();
db_open_repository(g.argv[3]);
db_record_repository_filename(g.argv[3]);
db_multi_exec(
"REPLACE INTO config(name,value)"
" VALUES('server-code', lower(hex(randomblob(20))));"
);
printf("Repository cloned into %s\n", g.argv[3]);
}else{
db_create_repository(g.argv[3]);
db_open_repository(g.argv[3]);
db_begin_transaction();
db_record_repository_filename(g.argv[3]);
db_initial_setup(0, 0);
user_select();
db_set("content-schema", CONTENT_SCHEMA, 0);
db_set("aux-schema", AUX_SCHEMA, 0);
db_set("last-sync-url", g.argv[2], 0);
db_multi_exec(
"REPLACE INTO config(name,value)"
|
| ︙ | ︙ |
Changes to src/db.c.
| ︙ | ︙ | |||
1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 |
** of the following form:
**
** repo:%s
**
** The value field is set to 1.
*/
void db_record_repository_filename(const char *zName){
if( zName==0 ){
if( !g.localOpen ) return;
zName = db_lget("repository", 0);
}
db_multi_exec(
"INSERT OR IGNORE INTO global_config(name,value)"
"VALUES('repo:%q',1)",
| > > < > > | 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 |
** of the following form:
**
** repo:%s
**
** The value field is set to 1.
*/
void db_record_repository_filename(const char *zName){
Blob full;
if( zName==0 ){
if( !g.localOpen ) return;
zName = db_lget("repository", 0);
}
file_canonical_name(zName, &full);
db_multi_exec(
"INSERT OR IGNORE INTO global_config(name,value)"
"VALUES('repo:%q',1)",
blob_str(&full)
);
blob_reset(&full);
}
/*
** COMMAND: open
**
** Usage: open FILENAME
**
|
| ︙ | ︙ |
Changes to src/info.c.
| ︙ | ︙ | |||
84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
if( g.argc!=2 && g.argc!=3 ){
usage("?FILEID|UUID?");
}
db_must_be_within_tree();
if( g.argc==2 ){
int vid;
/* 012345678901234 */
printf("repository: %s\n", db_lget("repository", ""));
printf("local-root: %s\n", g.zLocalRoot);
printf("project-code: %s\n", db_get("project-code", ""));
printf("server-code: %s\n", db_get("server-code", ""));
vid = db_lget_int("checkout", 0);
if( vid==0 ){
printf("checkout: nil\n");
| > | 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
if( g.argc!=2 && g.argc!=3 ){
usage("?FILEID|UUID?");
}
db_must_be_within_tree();
if( g.argc==2 ){
int vid;
/* 012345678901234 */
db_record_repository_filename(0);
printf("repository: %s\n", db_lget("repository", ""));
printf("local-root: %s\n", g.zLocalRoot);
printf("project-code: %s\n", db_get("project-code", ""));
printf("server-code: %s\n", db_get("server-code", ""));
vid = db_lget_int("checkout", 0);
if( vid==0 ){
printf("checkout: nil\n");
|
| ︙ | ︙ |
Changes to src/xfer.c.
| ︙ | ︙ | |||
816 817 818 819 820 821 822 |
xfer.pOut = &send;
xfer.mxSend = db_get_int("max-upload", 250000);
assert( pushFlag || pullFlag || cloneFlag || configMask );
assert( !g.urlIsFile ); /* This only works for networking */
db_begin_transaction();
| < | < | 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 |
xfer.pOut = &send;
xfer.mxSend = db_get_int("max-upload", 250000);
assert( pushFlag || pullFlag || cloneFlag || configMask );
assert( !g.urlIsFile ); /* This only works for networking */
db_begin_transaction();
db_record_repository_filename(0);
db_multi_exec(
"CREATE TEMP TABLE onremote(rid INTEGER PRIMARY KEY);"
);
blobarray_zero(xfer.aToken, count(xfer.aToken));
blob_zero(&send);
blob_zero(&recv);
blob_zero(&xfer.err);
|
| ︙ | ︙ |