Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Remove the seperate versionable version of db_get(), which now uses ctrlSettings to determine whether a setting is versionable or not. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | ben-testing |
Files: | files | file ages | folders |
SHA1: |
3113f7b18f672ee31cdeef429809b9de |
User & Date: | ben 2011-08-14 17:54:22 |
Context
2011-08-14
| ||
23:12 | Fix the file_relative_name() function so that it works on windows. Closed-Leaf check-in: 47b5bf7d16 user: drh tags: ben-testing | |
17:54 | Remove the seperate versionable version of db_get(), which now uses ctrlSettings to determine whether a setting is versionable or not. check-in: 3113f7b18f user: ben tags: ben-testing | |
07:21 | Merge trunk into ben-testing, adjusting for versionable settings. check-in: 246ac307bb user: ben tags: ben-testing | |
Changes
Changes to src/add.c.
︙ | ︙ | |||
58 59 60 61 62 63 64 | static const char *azManifest[] = { "manifest", "manifest.uuid", }; if( N>=0 && N<count(azName) ) return azName[N]; if( N>=count(azName) && N<count(azName)+count(azManifest) | | | 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | static const char *azManifest[] = { "manifest", "manifest.uuid", }; if( N>=0 && N<count(azName) ) return azName[N]; if( N>=count(azName) && N<count(azName)+count(azManifest) && db_get_boolean("manifest",0) ){ return azManifest[N-count(azName)]; } return 0; } /* ** Return a list of all reserved filenames as an SQL list. |
︙ | ︙ | |||
196 197 198 199 200 201 202 | zIgnoreFlag = find_option("ignore",0,1); includeDotFiles = find_option("dotfiles",0,0)!=0; capture_case_sensitive_option(); db_must_be_within_tree(); caseSensitive = filenames_are_case_sensitive(); if( zIgnoreFlag==0 ){ | | | 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 | zIgnoreFlag = find_option("ignore",0,1); includeDotFiles = find_option("dotfiles",0,0)!=0; capture_case_sensitive_option(); db_must_be_within_tree(); caseSensitive = filenames_are_case_sensitive(); if( zIgnoreFlag==0 ){ zIgnoreFlag = db_get("ignore-glob", 0); } vid = db_lget_int("checkout",0); if( vid==0 ){ fossil_panic("no checkout to add to"); } db_begin_transaction(); db_multi_exec("CREATE TEMP TABLE sfile(x TEXT PRIMARY KEY)"); |
︙ | ︙ | |||
388 389 390 391 392 393 394 | int nDelete = 0; Glob *pIgnore; capture_case_sensitive_option(); db_must_be_within_tree(); caseSensitive = filenames_are_case_sensitive(); if( zIgnoreFlag==0 ){ | | | 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 | int nDelete = 0; Glob *pIgnore; capture_case_sensitive_option(); db_must_be_within_tree(); caseSensitive = filenames_are_case_sensitive(); if( zIgnoreFlag==0 ){ zIgnoreFlag = db_get("ignore-glob", 0); } vid = db_lget_int("checkout",0); if( vid==0 ){ fossil_panic("no checkout to add to"); } db_begin_transaction(); |
︙ | ︙ |
Changes to src/checkin.c.
︙ | ︙ | |||
287 288 289 290 291 292 293 | int outputManifest; Glob *pIgnore; Blob rewrittenPathname; const char *zPathname, *zDisplayName; db_must_be_within_tree(); cwdRelative = determine_cwd_relative_option(); | | | | 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 | int outputManifest; Glob *pIgnore; Blob rewrittenPathname; const char *zPathname, *zDisplayName; db_must_be_within_tree(); cwdRelative = determine_cwd_relative_option(); outputManifest = db_get_boolean("manifest",0); db_multi_exec("CREATE TEMP TABLE sfile(x TEXT PRIMARY KEY)"); n = strlen(g.zLocalRoot); blob_init(&path, g.zLocalRoot, n-1); if( zIgnoreFlag==0 ){ zIgnoreFlag = db_get("ignore-glob", 0); } pIgnore = glob_create(zIgnoreFlag); vfile_scan(&path, blob_size(&path), allFlag, pIgnore); glob_free(pIgnore); db_prepare(&q, "SELECT x FROM sfile" " WHERE x NOT IN (%s)" |
︙ | ︙ | |||
358 359 360 361 362 363 364 | Glob *pIgnore; allFlag = find_option("force","f",0)!=0; dotfilesFlag = find_option("dotfiles",0,0)!=0; zIgnoreFlag = find_option("ignore",0,1); db_must_be_within_tree(); if( zIgnoreFlag==0 ){ | | | 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 | Glob *pIgnore; allFlag = find_option("force","f",0)!=0; dotfilesFlag = find_option("dotfiles",0,0)!=0; zIgnoreFlag = find_option("ignore",0,1); db_must_be_within_tree(); if( zIgnoreFlag==0 ){ zIgnoreFlag = db_get("ignore-glob", 0); } db_multi_exec("CREATE TEMP TABLE sfile(x TEXT PRIMARY KEY)"); n = strlen(g.zLocalRoot); blob_init(&path, g.zLocalRoot, n-1); pIgnore = glob_create(zIgnoreFlag); vfile_scan(&path, blob_size(&path), dotfilesFlag, pIgnore); glob_free(pIgnore); |
︙ | ︙ | |||
906 907 908 909 910 911 912 | } zDateOvrd = find_option("date-override",0,1); zUserOvrd = find_option("user-override",0,1); db_must_be_within_tree(); noSign = db_get_boolean("omitsign", 0)|noSign; if( db_get_boolean("clearsign", 0)==0 ){ noSign = 1; } useCksum = db_get_boolean("repo-cksum", 1); | | | 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 | } zDateOvrd = find_option("date-override",0,1); zUserOvrd = find_option("user-override",0,1); db_must_be_within_tree(); noSign = db_get_boolean("omitsign", 0)|noSign; if( db_get_boolean("clearsign", 0)==0 ){ noSign = 1; } useCksum = db_get_boolean("repo-cksum", 1); outputManifest = db_get_boolean("manifest", 0); verify_all_options(); /* So that older versions of Fossil (that do not understand delta- ** manifest) can continue to use this repository, do not create a new ** delta-manifest unless this repository already contains one or more ** delta-manifets, or unless the delta-manifest is explicitly requested ** by the --delta option. |
︙ | ︙ | |||
1047 1048 1049 1050 1051 1052 1053 | /* Step 1: Insert records for all modified files into the blob ** table. If there were arguments passed to this command, only ** the identified fils are inserted (if they have been modified). */ db_prepare(&q, "SELECT id, %Q || pathname, mrid, %s FROM vfile " "WHERE chnged==1 AND NOT deleted AND file_is_selected(id)", | | | 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 | /* Step 1: Insert records for all modified files into the blob ** table. If there were arguments passed to this command, only ** the identified fils are inserted (if they have been modified). */ db_prepare(&q, "SELECT id, %Q || pathname, mrid, %s FROM vfile " "WHERE chnged==1 AND NOT deleted AND file_is_selected(id)", g.zLocalRoot, glob_expr("pathname", db_get("crnl-glob","")) ); while( db_step(&q)==SQLITE_ROW ){ int id, rid; const char *zFullname; Blob content; int crnlOk; |
︙ | ︙ |
Changes to src/checkout.c.
︙ | ︙ | |||
129 130 131 132 133 134 135 | ** the text of the manifest and the artifact ID of the manifest. */ void manifest_to_disk(int vid){ char *zManFile; Blob manifest; Blob hash; | | | 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | ** the text of the manifest and the artifact ID of the manifest. */ void manifest_to_disk(int vid){ char *zManFile; Blob manifest; Blob hash; if( db_get_boolean("manifest",0) ){ blob_zero(&manifest); content_get(vid, &manifest); zManFile = mprintf("%smanifest", g.zLocalRoot); blob_write_to_file(&manifest, zManFile); free(zManFile); blob_zero(&hash); sha1sum_blob(&manifest, &hash); |
︙ | ︙ |
Changes to src/db.c.
︙ | ︙ | |||
1399 1400 1401 1402 1403 1404 1405 | sqlite3 *dbTemp = g.db; g.db = g.dbConfig; g.dbConfig = dbTemp; } } /* | | | | | | < | 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 | sqlite3 *dbTemp = g.db; g.db = g.dbConfig; g.dbConfig = dbTemp; } } /* ** Logic for reading potentially versioned settings from ** .fossil-settings/<name> , and emits warnings if necessary. ** Returns the non-versioned value without modification if there is no ** versioned value. */ static char *db_get_do_versionable(const char *zName, char *zNonVersionedSetting){ /* Attempt to load the versioned setting from a checked out file */ char *zVersionedSetting = 0; int noWarn = 0; if( db_open_local() ){ Blob versionedPathname; char *zVersionedPathname; blob_zero(&versionedPathname); blob_appendf(&versionedPathname, "%s/.fossil-settings/%s", g.zLocalRoot, zName); |
︙ | ︙ | |||
1436 1437 1438 1439 1440 1441 1442 | blob_append(&versionedPathname, ".no-warn", -1); if( file_size(blob_str(&versionedPathname))>=0 ){ noWarn = 1; } } blob_reset(&versionedPathname); } | < < | | | < < < < < < > > > > > > > > > > > > > | 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 | blob_append(&versionedPathname, ".no-warn", -1); if( file_size(blob_str(&versionedPathname))>=0 ){ noWarn = 1; } } blob_reset(&versionedPathname); } /* Display a warning? */ if( zVersionedSetting!=0 && zNonVersionedSetting!=0 && zNonVersionedSetting[0]!='\0' && !noWarn ){ /* There's a versioned setting, and a non-versioned setting. Tell ** the user about the conflict */ fossil_warning( "setting %s has both versioned and non-versioned values: using " "versioned value from file .fossil-settings/%s (to silence this " "warning, either create an empty file named " ".fossil-settings/%s.no-warn or delete the non-versioned setting " " with \"fossil unset %s\")", zName, zName, zName, zName ); } /* Prefer the versioned setting */ return ( zVersionedSetting!=0 ) ? zVersionedSetting : zNonVersionedSetting; } /* ** Get and set values from the CONFIG, GLOBAL_CONFIG and VVAR table in the ** repository and local databases. */ char *db_get(const char *zName, char *zDefault){ char *z = 0; int i; const struct stControlSettings *ctrlSetting = 0; /* Is this a setting? */ for(i=0; ctrlSettings[i].name; i++){ if( strcmp(ctrlSettings[i].name, zName)==0 ){ ctrlSetting = &(ctrlSettings[i]); break; } } if( g.repositoryOpen ){ z = db_text(0, "SELECT value FROM config WHERE name=%Q", zName); } if( z==0 && g.configOpen ){ db_swap_connections(); z = db_text(0, "SELECT value FROM global_config WHERE name=%Q", zName); db_swap_connections(); } if( ctrlSetting!=0 && ctrlSetting->versionable ){ /* This is a versionable setting, try and get the info from a checked out file */ z = db_get_do_versionable(zName, z); } if( z==0 ){ z = zDefault; } return z; } void db_set(const char *zName, const char *zValue, int globalFlag){ |
︙ | ︙ |
Changes to src/merge.c.
︙ | ︙ | |||
96 97 98 99 100 101 102 | zPivot = find_option("baseline",0,1); capture_case_sensitive_option(); if( g.argc!=3 ){ usage("VERSION"); } db_must_be_within_tree(); caseSensitive = filenames_are_case_sensitive(); | | | 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | zPivot = find_option("baseline",0,1); capture_case_sensitive_option(); if( g.argc!=3 ){ usage("VERSION"); } db_must_be_within_tree(); caseSensitive = filenames_are_case_sensitive(); if( zBinGlob==0 ) zBinGlob = db_get("binary-glob",0); vid = db_lget_int("checkout", 0); if( vid==0 ){ fossil_fatal("nothing is checked out"); } mid = name_to_typed_rid(g.argv[2], "ci"); if( mid==0 || !is_a_version(mid) ){ fossil_fatal("not a version: %s", g.argv[2]); |
︙ | ︙ |
Changes to src/tar.c.
︙ | ︙ | |||
464 465 466 467 468 469 470 | blob_appendf(&filename, "%s/", zDir); } nPrefix = blob_size(&filename); pManifest = manifest_get(rid, CFTYPE_MANIFEST); if( pManifest ){ mTime = (pManifest->rDate - 2440587.5)*86400.0; | | | 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 | blob_appendf(&filename, "%s/", zDir); } nPrefix = blob_size(&filename); pManifest = manifest_get(rid, CFTYPE_MANIFEST); if( pManifest ){ mTime = (pManifest->rDate - 2440587.5)*86400.0; if( db_get_boolean("manifest", 0) ){ blob_append(&filename, "manifest", -1); zName = blob_str(&filename); tar_add_file(zName, &mfile, 0, mTime); sha1sum_blob(&mfile, &hash); blob_reset(&mfile); blob_append(&hash, "\n", 1); blob_resize(&filename, nPrefix); |
︙ | ︙ |
Changes to src/update.c.
︙ | ︙ | |||
464 465 466 467 468 469 470 | } /* ** Make sure empty directories are created */ void ensure_empty_dirs_created(void){ /* Make empty directories? */ | | | 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 | } /* ** Make sure empty directories are created */ void ensure_empty_dirs_created(void){ /* Make empty directories? */ char *zEmptyDirs = db_get("empty-dirs", 0); if( zEmptyDirs!=0 ){ char *bc; Blob dirName; Blob dirsList; blob_zero(&dirsList); blob_init(&dirsList, zEmptyDirs, strlen(zEmptyDirs)); |
︙ | ︙ |
Changes to src/zip.c.
︙ | ︙ | |||
335 336 337 338 339 340 341 | } nPrefix = blob_size(&filename); pManifest = manifest_get(rid, CFTYPE_MANIFEST); if( pManifest ){ char *zName; zip_set_timedate(pManifest->rDate); | | | 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 | } nPrefix = blob_size(&filename); pManifest = manifest_get(rid, CFTYPE_MANIFEST); if( pManifest ){ char *zName; zip_set_timedate(pManifest->rDate); if( db_get_boolean("manifest", 0) ){ blob_append(&filename, "manifest", -1); zName = blob_str(&filename); zip_add_folders(zName); zip_add_file(zName, &mfile, 0); sha1sum_blob(&mfile, &hash); blob_reset(&mfile); blob_append(&hash, "\n", 1); |
︙ | ︙ |