Index: src/manifest.c ================================================================== --- src/manifest.c +++ src/manifest.c @@ -47,10 +47,11 @@ /* ** Flags for use with manifest_crosslink(). */ #define MC_NONE 0 /* default handling */ #define MC_PERMIT_HOOKS 1 /* permit hooks to execute */ +#define MC_NO_ERRORS 2 /* do not issue errors for a bad parse */ /* ** A single F-card within a manifest */ struct ManifestFile { @@ -1733,23 +1734,25 @@ if( (p = manifest_cache_find(rid))!=0 ){ blob_reset(pContent); }else if( (p = manifest_parse(pContent, rid, 0))==0 ){ assert( blob_is_reset(pContent) || pContent==0 ); - fossil_error(1, "syntax error in manifest"); + if( (flags & MC_NO_ERRORS)==0 ) fossil_error(1, "syntax error in manifest"); return 0; } if( g.xlinkClusterOnly && p->type!=CFTYPE_CLUSTER ){ manifest_destroy(p); assert( blob_is_reset(pContent) ); - fossil_error(1, "no manifest"); + if( (flags & MC_NO_ERRORS)==0 ) fossil_error(1, "no manifest"); return 0; } if( p->type==CFTYPE_MANIFEST && fetch_baseline(p, 0) ){ manifest_destroy(p); assert( blob_is_reset(pContent) ); - fossil_error(1, "cannot fetch baseline manifest"); + if( (flags & MC_NO_ERRORS)==0 ){ + fossil_error(1, "cannot fetch baseline manifest"); + } return 0; } db_begin_transaction(); if( p->type==CFTYPE_MANIFEST ){ if( permitHooks ){ Index: src/xfer.c ================================================================== --- src/xfer.c +++ src/xfer.c @@ -201,11 +201,11 @@ if( rid==0 ){ blob_appendf(&pXfer->err, "%s", g.zErrMsg); blob_reset(&content); }else{ if( !isPriv ) content_make_public(rid); - manifest_crosslink(rid, &content, MC_NONE); + manifest_crosslink(rid, &content, MC_NONE|MC_NO_ERRORS); } assert( blob_is_reset(&content) ); remote_has(rid); }