Fossil SCM
Add support for doing a "configuration sync" of URL aliases.
Commit
3d36a37a738a21c48344d96001182f852a81c59facfa9e2567af487722fd61bb
Parent
fe7f0ece30019cb…
2 files changed
+21
-1
+1
-1
+21
-1
| --- src/configure.c | ||
| +++ src/configure.c | ||
| @@ -35,12 +35,13 @@ | ||
| 35 | 35 | #define CONFIGSET_PROJ 0x000008 /* Project name */ |
| 36 | 36 | #define CONFIGSET_SHUN 0x000010 /* Shun settings */ |
| 37 | 37 | #define CONFIGSET_USER 0x000020 /* The USER table */ |
| 38 | 38 | #define CONFIGSET_ADDR 0x000040 /* The CONCEALED table */ |
| 39 | 39 | #define CONFIGSET_XFER 0x000080 /* Transfer configuration */ |
| 40 | +#define CONFIGSET_ALIAS 0x000100 /* URL Aliases */ | |
| 40 | 41 | |
| 41 | -#define CONFIGSET_ALL 0x0000ff /* Everything */ | |
| 42 | +#define CONFIGSET_ALL 0x0001ff /* Everything */ | |
| 42 | 43 | |
| 43 | 44 | #define CONFIGSET_OVERWRITE 0x100000 /* Causes overwrite instead of merge */ |
| 44 | 45 | |
| 45 | 46 | /* |
| 46 | 47 | ** This mask is used for the common TH1 configuration settings (i.e. those |
| @@ -66,10 +67,11 @@ | ||
| 66 | 67 | { "/css", CONFIGSET_CSS, "Style sheet" }, |
| 67 | 68 | { "/shun", CONFIGSET_SHUN, "List of shunned artifacts" }, |
| 68 | 69 | { "/ticket", CONFIGSET_TKT, "Ticket setup", }, |
| 69 | 70 | { "/user", CONFIGSET_USER, "Users and privilege settings" }, |
| 70 | 71 | { "/xfer", CONFIGSET_XFER, "Transfer setup", }, |
| 72 | + { "/alias", CONFIGSET_ALIAS, "URL Aliases", }, | |
| 71 | 73 | { "/all", CONFIGSET_ALL, "All of the above" }, |
| 72 | 74 | }; |
| 73 | 75 | |
| 74 | 76 | |
| 75 | 77 | /* |
| @@ -152,10 +154,12 @@ | ||
| 152 | 154 | { "@user", CONFIGSET_USER }, |
| 153 | 155 | |
| 154 | 156 | { "@concealed", CONFIGSET_ADDR }, |
| 155 | 157 | |
| 156 | 158 | { "@shun", CONFIGSET_SHUN }, |
| 159 | + | |
| 160 | + { "@alias", CONFIGSET_ALIAS }, | |
| 157 | 161 | |
| 158 | 162 | { "xfer-common-script", CONFIGSET_XFER }, |
| 159 | 163 | { "xfer-push-script", CONFIGSET_XFER }, |
| 160 | 164 | { "xfer-commit-script", CONFIGSET_XFER }, |
| 161 | 165 | { "xfer-ticket-script", CONFIGSET_XFER }, |
| @@ -667,10 +671,26 @@ | ||
| 667 | 671 | blob_size(&rec), blob_str(&rec)); |
| 668 | 672 | nCard++; |
| 669 | 673 | blob_reset(&rec); |
| 670 | 674 | } |
| 671 | 675 | db_finalize(&q); |
| 676 | + } | |
| 677 | + if( groupMask & CONFIGSET_ALIAS ){ | |
| 678 | + db_prepare(&q, "SELECT mtime, quote(name), quote(value) FROM config" | |
| 679 | + " WHERE name GLOB 'walias:/*' AND mtime>=%lld", iStart); | |
| 680 | + while( db_step(&q)==SQLITE_ROW ){ | |
| 681 | + blob_appendf(&rec,"%s %s value %s", | |
| 682 | + db_column_text(&q, 0), | |
| 683 | + db_column_text(&q, 1), | |
| 684 | + db_column_text(&q, 2) | |
| 685 | + ); | |
| 686 | + blob_appendf(pOut, "config /config %d\n%s\n", | |
| 687 | + blob_size(&rec), blob_str(&rec)); | |
| 688 | + nCard++; | |
| 689 | + blob_reset(&rec); | |
| 690 | + } | |
| 691 | + db_finalize(&q); | |
| 672 | 692 | } |
| 673 | 693 | db_prepare(&q, "SELECT mtime, quote(name), quote(value) FROM config" |
| 674 | 694 | " WHERE name=:name AND mtime>=%lld", iStart); |
| 675 | 695 | for(ii=0; ii<count(aConfig); ii++){ |
| 676 | 696 | if( (aConfig[ii].groupMask & groupMask)!=0 && aConfig[ii].zName[0]!='@' ){ |
| 677 | 697 |
| --- src/configure.c | |
| +++ src/configure.c | |
| @@ -35,12 +35,13 @@ | |
| 35 | #define CONFIGSET_PROJ 0x000008 /* Project name */ |
| 36 | #define CONFIGSET_SHUN 0x000010 /* Shun settings */ |
| 37 | #define CONFIGSET_USER 0x000020 /* The USER table */ |
| 38 | #define CONFIGSET_ADDR 0x000040 /* The CONCEALED table */ |
| 39 | #define CONFIGSET_XFER 0x000080 /* Transfer configuration */ |
| 40 | |
| 41 | #define CONFIGSET_ALL 0x0000ff /* Everything */ |
| 42 | |
| 43 | #define CONFIGSET_OVERWRITE 0x100000 /* Causes overwrite instead of merge */ |
| 44 | |
| 45 | /* |
| 46 | ** This mask is used for the common TH1 configuration settings (i.e. those |
| @@ -66,10 +67,11 @@ | |
| 66 | { "/css", CONFIGSET_CSS, "Style sheet" }, |
| 67 | { "/shun", CONFIGSET_SHUN, "List of shunned artifacts" }, |
| 68 | { "/ticket", CONFIGSET_TKT, "Ticket setup", }, |
| 69 | { "/user", CONFIGSET_USER, "Users and privilege settings" }, |
| 70 | { "/xfer", CONFIGSET_XFER, "Transfer setup", }, |
| 71 | { "/all", CONFIGSET_ALL, "All of the above" }, |
| 72 | }; |
| 73 | |
| 74 | |
| 75 | /* |
| @@ -152,10 +154,12 @@ | |
| 152 | { "@user", CONFIGSET_USER }, |
| 153 | |
| 154 | { "@concealed", CONFIGSET_ADDR }, |
| 155 | |
| 156 | { "@shun", CONFIGSET_SHUN }, |
| 157 | |
| 158 | { "xfer-common-script", CONFIGSET_XFER }, |
| 159 | { "xfer-push-script", CONFIGSET_XFER }, |
| 160 | { "xfer-commit-script", CONFIGSET_XFER }, |
| 161 | { "xfer-ticket-script", CONFIGSET_XFER }, |
| @@ -667,10 +671,26 @@ | |
| 667 | blob_size(&rec), blob_str(&rec)); |
| 668 | nCard++; |
| 669 | blob_reset(&rec); |
| 670 | } |
| 671 | db_finalize(&q); |
| 672 | } |
| 673 | db_prepare(&q, "SELECT mtime, quote(name), quote(value) FROM config" |
| 674 | " WHERE name=:name AND mtime>=%lld", iStart); |
| 675 | for(ii=0; ii<count(aConfig); ii++){ |
| 676 | if( (aConfig[ii].groupMask & groupMask)!=0 && aConfig[ii].zName[0]!='@' ){ |
| 677 |
| --- src/configure.c | |
| +++ src/configure.c | |
| @@ -35,12 +35,13 @@ | |
| 35 | #define CONFIGSET_PROJ 0x000008 /* Project name */ |
| 36 | #define CONFIGSET_SHUN 0x000010 /* Shun settings */ |
| 37 | #define CONFIGSET_USER 0x000020 /* The USER table */ |
| 38 | #define CONFIGSET_ADDR 0x000040 /* The CONCEALED table */ |
| 39 | #define CONFIGSET_XFER 0x000080 /* Transfer configuration */ |
| 40 | #define CONFIGSET_ALIAS 0x000100 /* URL Aliases */ |
| 41 | |
| 42 | #define CONFIGSET_ALL 0x0001ff /* Everything */ |
| 43 | |
| 44 | #define CONFIGSET_OVERWRITE 0x100000 /* Causes overwrite instead of merge */ |
| 45 | |
| 46 | /* |
| 47 | ** This mask is used for the common TH1 configuration settings (i.e. those |
| @@ -66,10 +67,11 @@ | |
| 67 | { "/css", CONFIGSET_CSS, "Style sheet" }, |
| 68 | { "/shun", CONFIGSET_SHUN, "List of shunned artifacts" }, |
| 69 | { "/ticket", CONFIGSET_TKT, "Ticket setup", }, |
| 70 | { "/user", CONFIGSET_USER, "Users and privilege settings" }, |
| 71 | { "/xfer", CONFIGSET_XFER, "Transfer setup", }, |
| 72 | { "/alias", CONFIGSET_ALIAS, "URL Aliases", }, |
| 73 | { "/all", CONFIGSET_ALL, "All of the above" }, |
| 74 | }; |
| 75 | |
| 76 | |
| 77 | /* |
| @@ -152,10 +154,12 @@ | |
| 154 | { "@user", CONFIGSET_USER }, |
| 155 | |
| 156 | { "@concealed", CONFIGSET_ADDR }, |
| 157 | |
| 158 | { "@shun", CONFIGSET_SHUN }, |
| 159 | |
| 160 | { "@alias", CONFIGSET_ALIAS }, |
| 161 | |
| 162 | { "xfer-common-script", CONFIGSET_XFER }, |
| 163 | { "xfer-push-script", CONFIGSET_XFER }, |
| 164 | { "xfer-commit-script", CONFIGSET_XFER }, |
| 165 | { "xfer-ticket-script", CONFIGSET_XFER }, |
| @@ -667,10 +671,26 @@ | |
| 671 | blob_size(&rec), blob_str(&rec)); |
| 672 | nCard++; |
| 673 | blob_reset(&rec); |
| 674 | } |
| 675 | db_finalize(&q); |
| 676 | } |
| 677 | if( groupMask & CONFIGSET_ALIAS ){ |
| 678 | db_prepare(&q, "SELECT mtime, quote(name), quote(value) FROM config" |
| 679 | " WHERE name GLOB 'walias:/*' AND mtime>=%lld", iStart); |
| 680 | while( db_step(&q)==SQLITE_ROW ){ |
| 681 | blob_appendf(&rec,"%s %s value %s", |
| 682 | db_column_text(&q, 0), |
| 683 | db_column_text(&q, 1), |
| 684 | db_column_text(&q, 2) |
| 685 | ); |
| 686 | blob_appendf(pOut, "config /config %d\n%s\n", |
| 687 | blob_size(&rec), blob_str(&rec)); |
| 688 | nCard++; |
| 689 | blob_reset(&rec); |
| 690 | } |
| 691 | db_finalize(&q); |
| 692 | } |
| 693 | db_prepare(&q, "SELECT mtime, quote(name), quote(value) FROM config" |
| 694 | " WHERE name=:name AND mtime>=%lld", iStart); |
| 695 | for(ii=0; ii<count(aConfig); ii++){ |
| 696 | if( (aConfig[ii].groupMask & groupMask)!=0 && aConfig[ii].zName[0]!='@' ){ |
| 697 |
M
src/db.c
+1
-1
| --- src/db.c | ||
| +++ src/db.c | ||
| @@ -1872,11 +1872,11 @@ | ||
| 1872 | 1872 | ** Copy all settings from the supplied template repository. |
| 1873 | 1873 | */ |
| 1874 | 1874 | db_multi_exec( |
| 1875 | 1875 | "INSERT OR REPLACE INTO config" |
| 1876 | 1876 | " SELECT name,value,mtime FROM settingSrc.config" |
| 1877 | - " WHERE (name IN %s OR name IN %s)" | |
| 1877 | + " WHERE (name IN %s OR name IN %s OR name GLOB 'walias:/*')" | |
| 1878 | 1878 | " AND name NOT GLOB 'project-*'" |
| 1879 | 1879 | " AND name NOT GLOB 'short-project-*';", |
| 1880 | 1880 | configure_inop_rhs(CONFIGSET_ALL), |
| 1881 | 1881 | db_setting_inop_rhs() |
| 1882 | 1882 | ); |
| 1883 | 1883 |
| --- src/db.c | |
| +++ src/db.c | |
| @@ -1872,11 +1872,11 @@ | |
| 1872 | ** Copy all settings from the supplied template repository. |
| 1873 | */ |
| 1874 | db_multi_exec( |
| 1875 | "INSERT OR REPLACE INTO config" |
| 1876 | " SELECT name,value,mtime FROM settingSrc.config" |
| 1877 | " WHERE (name IN %s OR name IN %s)" |
| 1878 | " AND name NOT GLOB 'project-*'" |
| 1879 | " AND name NOT GLOB 'short-project-*';", |
| 1880 | configure_inop_rhs(CONFIGSET_ALL), |
| 1881 | db_setting_inop_rhs() |
| 1882 | ); |
| 1883 |
| --- src/db.c | |
| +++ src/db.c | |
| @@ -1872,11 +1872,11 @@ | |
| 1872 | ** Copy all settings from the supplied template repository. |
| 1873 | */ |
| 1874 | db_multi_exec( |
| 1875 | "INSERT OR REPLACE INTO config" |
| 1876 | " SELECT name,value,mtime FROM settingSrc.config" |
| 1877 | " WHERE (name IN %s OR name IN %s OR name GLOB 'walias:/*')" |
| 1878 | " AND name NOT GLOB 'project-*'" |
| 1879 | " AND name NOT GLOB 'short-project-*';", |
| 1880 | configure_inop_rhs(CONFIGSET_ALL), |
| 1881 | db_setting_inop_rhs() |
| 1882 | ); |
| 1883 |