Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | If a remote has forbid-delta-manifests set and a client with autocommit enabled tries to commit, the remote tells the client to avoid deltas and the client obeys, unless the explicit --delta option is used. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
9116c6fbeaff18cb2336d3642c907b8a |
| User & Date: | drh 2020-07-24 11:49:32.456 |
Context
|
2020-07-24
| ||
| 12:02 | Improved documentation of the forbid-delta-manifests setting. ... (check-in: 6dc17a5760 user: drh tags: trunk) | |
| 11:49 | If a remote has forbid-delta-manifests set and a client with autocommit enabled tries to commit, the remote tells the client to avoid deltas and the client obeys, unless the explicit --delta option is used. ... (check-in: 9116c6fbea user: drh tags: trunk) | |
| 10:57 | Fix the forbid-delta-manifest setting so that it actually works. ... (check-in: 6ed036f287 user: drh tags: trunk) | |
Changes
Changes to src/checkin.c.
| ︙ | ︙ | |||
2231 2232 2233 2234 2235 2236 2237 |
/* Escape special characters in tags and put all tags in sorted order */
if( nTag ){
int i;
for(i=0; i<nTag; i++) sCiInfo.azTag[i] = mprintf("%F", sCiInfo.azTag[i]);
qsort((void*)sCiInfo.azTag, nTag, sizeof(sCiInfo.azTag[0]), tagCmp);
}
| < < < < < < < < < < < < < < > > > > > > > > > > > > > > > > > > > > > > | 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 |
/* Escape special characters in tags and put all tags in sorted order */
if( nTag ){
int i;
for(i=0; i<nTag; i++) sCiInfo.azTag[i] = mprintf("%F", sCiInfo.azTag[i]);
qsort((void*)sCiInfo.azTag, nTag, sizeof(sCiInfo.azTag[0]), tagCmp);
}
/*
** Autosync if autosync is enabled and this is not a private check-in.
*/
if( !g.markPrivate ){
int syncFlags = SYNC_PULL;
if( vid!=0 && !allowFork && !forceFlag ){
syncFlags |= SYNC_CKIN_LOCK;
}
if( autosync_loop(syncFlags, db_get_int("autosync-tries", 1), 1) ){
fossil_exit(1);
}
}
/* 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-manifests, or unless the delta-manifest is explicitly requested
** by the --delta option.
**
** The forbid-delta-manifests setting prevents new delta manifests.
**
** If the remote repository sent an avoid-delta-manifests pragma on
** the autosync above, then also try to avoid deltas, unless the
** --delta option is specified. The remote repo will send the
** avoid-delta-manifests pragma if it has its "forbid-delta-manifests"
** setting is enabled.
*/
if( !db_get_boolean("seen-delta-manifest",0)
|| db_get_boolean("forbid-delta-manifests",0)
|| g.bAvoidDeltaManifests
){
if( !forceDelta ) forceBaseline = 1;
}
/* Require confirmation to continue with the check-in if there is
** clock skew
*/
if( g.clockSkewSeen ){
if( !noPrompt ){
prompt_user("continue in spite of time skew (y/N)? ", &ans);
|
| ︙ | ︙ |
Changes to src/main.c.
| ︙ | ︙ | |||
262 263 264 265 266 267 268 269 270 271 272 273 274 275 |
const char *azAuxVal[MX_AUX]; /* Value of each aux() or option() value */
const char **azAuxOpt[MX_AUX]; /* Options of each option() value */
int anAuxCols[MX_AUX]; /* Number of columns for option() values */
int allowSymlinks; /* Cached "allow-symlinks" option */
int mainTimerId; /* Set to fossil_timer_start() */
int nPendingRequest; /* # of HTTP requests in "fossil server" */
int nRequest; /* Total # of HTTP request */
#ifdef FOSSIL_ENABLE_JSON
struct FossilJsonBits {
int isJsonMode; /* True if running in JSON mode, else
false. This changes how errors are
reported. In JSON mode we try to
always output JSON-form error
responses and always (in CGI mode)
| > | 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 |
const char *azAuxVal[MX_AUX]; /* Value of each aux() or option() value */
const char **azAuxOpt[MX_AUX]; /* Options of each option() value */
int anAuxCols[MX_AUX]; /* Number of columns for option() values */
int allowSymlinks; /* Cached "allow-symlinks" option */
int mainTimerId; /* Set to fossil_timer_start() */
int nPendingRequest; /* # of HTTP requests in "fossil server" */
int nRequest; /* Total # of HTTP request */
int bAvoidDeltaManifests; /* Avoid using delta manifests if true */
#ifdef FOSSIL_ENABLE_JSON
struct FossilJsonBits {
int isJsonMode; /* True if running in JSON mode, else
false. This changes how errors are
reported. In JSON mode we try to
always output JSON-form error
responses and always (in CGI mode)
|
| ︙ | ︙ |
Changes to src/xfer.c.
| ︙ | ︙ | |||
1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 |
db_multi_exec(
"REPLACE INTO config(name,value,mtime)"
"VALUES('ci-lock-%q',json_object('login',%Q,'clientid',%Q),now())",
blob_str(&xfer.aToken[2]), g.zLogin,
blob_str(&xfer.aToken[3])
);
}
}
/* pragma ci-unlock CLIENT-ID
**
** Remove any locks previously held by CLIENT-ID. Clients send this
** pragma with their own ID whenever they know that they no longer
** have any commits pending.
| > > > | 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 |
db_multi_exec(
"REPLACE INTO config(name,value,mtime)"
"VALUES('ci-lock-%q',json_object('login',%Q,'clientid',%Q),now())",
blob_str(&xfer.aToken[2]), g.zLogin,
blob_str(&xfer.aToken[3])
);
}
if( db_get_boolean("forbid-delta-manifests",0) ){
@ pragma avoid-delta-manifests
}
}
/* pragma ci-unlock CLIENT-ID
**
** Remove any locks previously held by CLIENT-ID. Clients send this
** pragma with their own ID whenever they know that they no longer
** have any commits pending.
|
| ︙ | ︙ | |||
2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 |
fossil_print("\nParent check-in locked by %s %s ago\n",
zUser, human_readable_age((iNow+1-mtime)/86400.0));
}else{
fossil_print("\nParent check-in locked by %s\n", zUser);
}
g.ckinLockFail = fossil_strdup(zUser);
}
}else
/* error MESSAGE
**
** The server is reporting an error. The client will abandon
** the sync session.
**
| > > > > > > > > > | 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 |
fossil_print("\nParent check-in locked by %s %s ago\n",
zUser, human_readable_age((iNow+1-mtime)/86400.0));
}else{
fossil_print("\nParent check-in locked by %s\n", zUser);
}
g.ckinLockFail = fossil_strdup(zUser);
}
/* pragma avoid-delta-manifests
**
** Discourage the use of delta manifests. The remote side sends
** this pragma when its forbid-delta-manifests setting is true.
*/
else if( blob_eq(&xfer.aToken[1], "avoid-delta-manifests") ){
g.bAvoidDeltaManifests = 1;
}
}else
/* error MESSAGE
**
** The server is reporting an error. The client will abandon
** the sync session.
**
|
| ︙ | ︙ |