Fossil SCM
/vdiff: correct glob=... to support a comma-separated list, as some docs suggest it does. Fix the "Clear glob" link so that it clears the glob. This resolves problems reported way back in [forum:a574cf527b | forum post a574cf527b].
Commit
e576ce7b5598710a5ee05e338fb4fb80b1e36ede0d45b56879f5cd84256623a9
Parent
21344191a9c4450…
1 file changed
+11
-6
+11
-6
| --- src/info.c | ||
| +++ src/info.c | ||
| @@ -1193,10 +1193,11 @@ | ||
| 1193 | 1193 | const char *zBranch; |
| 1194 | 1194 | const char *zFrom; |
| 1195 | 1195 | const char *zTo; |
| 1196 | 1196 | const char *zRe; |
| 1197 | 1197 | const char *zGlob; |
| 1198 | + Glob * pGlob = 0; | |
| 1198 | 1199 | char *zMergeOrigin = 0; |
| 1199 | 1200 | ReCompiled *pRe = 0; |
| 1200 | 1201 | DiffConfig DCfg, *pCfg = 0; |
| 1201 | 1202 | int graphFlags = 0; |
| 1202 | 1203 | Blob qp; |
| @@ -1244,15 +1245,18 @@ | ||
| 1244 | 1245 | pTo = pFrom; |
| 1245 | 1246 | pFrom = pTemp; |
| 1246 | 1247 | zTo = zFrom; |
| 1247 | 1248 | zFrom = zTemp; |
| 1248 | 1249 | } |
| 1249 | - if( zGlob ){ | |
| 1250 | + if( P("clearglob") ){ | |
| 1251 | + zGlob = 0; | |
| 1252 | + }else if( zGlob){ | |
| 1250 | 1253 | if( !*zGlob ){ |
| 1251 | 1254 | zGlob = NULL; |
| 1252 | 1255 | }else{ |
| 1253 | 1256 | blob_appendf(&qp, "&glob=%T", zGlob); |
| 1257 | + pGlob = glob_create(zGlob); | |
| 1254 | 1258 | } |
| 1255 | 1259 | } |
| 1256 | 1260 | if( PB("nc") ){ |
| 1257 | 1261 | graphFlags |= TIMELINE_NOCOLOR; |
| 1258 | 1262 | blob_appendf(&qp, "&nc"); |
| @@ -1277,11 +1281,11 @@ | ||
| 1277 | 1281 | } |
| 1278 | 1282 | if( zBranch==0 ){ |
| 1279 | 1283 | style_submenu_element("Invert","%R/vdiff?diff=%d&inv&%b", diffType, &qp); |
| 1280 | 1284 | } |
| 1281 | 1285 | if( zGlob ){ |
| 1282 | - style_submenu_element("Clear glob", "%R/vdiff?diff=%d&%b", diffType, &qp); | |
| 1286 | + style_submenu_element("Clear glob", "%R/vdiff?diff=%d&%b&clearglob", diffType, &qp); | |
| 1283 | 1287 | }else{ |
| 1284 | 1288 | style_submenu_element("Patch", "%R/vpatch?from=%T&to=%T%s", zFrom, zTo, |
| 1285 | 1289 | (DCfg.diffFlags & DIFF_IGNORE_ALLWS)?"&w":""); |
| 1286 | 1290 | } |
| 1287 | 1291 | if( diffType!=0 ){ |
| @@ -1339,37 +1343,38 @@ | ||
| 1339 | 1343 | cmp = -1; |
| 1340 | 1344 | }else{ |
| 1341 | 1345 | cmp = fossil_strcmp(pFileFrom->zName, pFileTo->zName); |
| 1342 | 1346 | } |
| 1343 | 1347 | if( cmp<0 ){ |
| 1344 | - if( !zGlob || sqlite3_strglob(zGlob, pFileFrom->zName)==0 ){ | |
| 1348 | + if( !pGlob || glob_match(pGlob, pFileFrom->zName) ){ | |
| 1345 | 1349 | append_file_change_line(zFrom, pFileFrom->zName, |
| 1346 | 1350 | pFileFrom->zUuid, 0, 0, pCfg, 0); |
| 1347 | 1351 | } |
| 1348 | 1352 | pFileFrom = manifest_file_next(pFrom, 0); |
| 1349 | 1353 | }else if( cmp>0 ){ |
| 1350 | - if( !zGlob || sqlite3_strglob(zGlob, pFileTo->zName)==0 ){ | |
| 1354 | + if( !pGlob || glob_match(pGlob, pFileTo->zName) ){ | |
| 1351 | 1355 | append_file_change_line(zTo, pFileTo->zName, |
| 1352 | 1356 | 0, pFileTo->zUuid, 0, pCfg, |
| 1353 | 1357 | manifest_file_mperm(pFileTo)); |
| 1354 | 1358 | } |
| 1355 | 1359 | pFileTo = manifest_file_next(pTo, 0); |
| 1356 | 1360 | }else if( fossil_strcmp(pFileFrom->zUuid, pFileTo->zUuid)==0 ){ |
| 1357 | 1361 | pFileFrom = manifest_file_next(pFrom, 0); |
| 1358 | 1362 | pFileTo = manifest_file_next(pTo, 0); |
| 1359 | 1363 | }else{ |
| 1360 | - if(!zGlob || (sqlite3_strglob(zGlob, pFileFrom->zName)==0 | |
| 1361 | - || sqlite3_strglob(zGlob, pFileTo->zName)==0) ){ | |
| 1364 | + if(!pGlob || (glob_match(pGlob, pFileFrom->zName) | |
| 1365 | + || glob_match(pGlob, pFileTo->zName)) ){ | |
| 1362 | 1366 | append_file_change_line(zFrom, pFileFrom->zName, |
| 1363 | 1367 | pFileFrom->zUuid, |
| 1364 | 1368 | pFileTo->zUuid, 0, pCfg, |
| 1365 | 1369 | manifest_file_mperm(pFileTo)); |
| 1366 | 1370 | } |
| 1367 | 1371 | pFileFrom = manifest_file_next(pFrom, 0); |
| 1368 | 1372 | pFileTo = manifest_file_next(pTo, 0); |
| 1369 | 1373 | } |
| 1370 | 1374 | } |
| 1375 | + glob_free(pGlob); | |
| 1371 | 1376 | manifest_destroy(pFrom); |
| 1372 | 1377 | manifest_destroy(pTo); |
| 1373 | 1378 | append_diff_javascript(diffType); |
| 1374 | 1379 | style_finish_page(); |
| 1375 | 1380 | } |
| 1376 | 1381 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -1193,10 +1193,11 @@ | |
| 1193 | const char *zBranch; |
| 1194 | const char *zFrom; |
| 1195 | const char *zTo; |
| 1196 | const char *zRe; |
| 1197 | const char *zGlob; |
| 1198 | char *zMergeOrigin = 0; |
| 1199 | ReCompiled *pRe = 0; |
| 1200 | DiffConfig DCfg, *pCfg = 0; |
| 1201 | int graphFlags = 0; |
| 1202 | Blob qp; |
| @@ -1244,15 +1245,18 @@ | |
| 1244 | pTo = pFrom; |
| 1245 | pFrom = pTemp; |
| 1246 | zTo = zFrom; |
| 1247 | zFrom = zTemp; |
| 1248 | } |
| 1249 | if( zGlob ){ |
| 1250 | if( !*zGlob ){ |
| 1251 | zGlob = NULL; |
| 1252 | }else{ |
| 1253 | blob_appendf(&qp, "&glob=%T", zGlob); |
| 1254 | } |
| 1255 | } |
| 1256 | if( PB("nc") ){ |
| 1257 | graphFlags |= TIMELINE_NOCOLOR; |
| 1258 | blob_appendf(&qp, "&nc"); |
| @@ -1277,11 +1281,11 @@ | |
| 1277 | } |
| 1278 | if( zBranch==0 ){ |
| 1279 | style_submenu_element("Invert","%R/vdiff?diff=%d&inv&%b", diffType, &qp); |
| 1280 | } |
| 1281 | if( zGlob ){ |
| 1282 | style_submenu_element("Clear glob", "%R/vdiff?diff=%d&%b", diffType, &qp); |
| 1283 | }else{ |
| 1284 | style_submenu_element("Patch", "%R/vpatch?from=%T&to=%T%s", zFrom, zTo, |
| 1285 | (DCfg.diffFlags & DIFF_IGNORE_ALLWS)?"&w":""); |
| 1286 | } |
| 1287 | if( diffType!=0 ){ |
| @@ -1339,37 +1343,38 @@ | |
| 1339 | cmp = -1; |
| 1340 | }else{ |
| 1341 | cmp = fossil_strcmp(pFileFrom->zName, pFileTo->zName); |
| 1342 | } |
| 1343 | if( cmp<0 ){ |
| 1344 | if( !zGlob || sqlite3_strglob(zGlob, pFileFrom->zName)==0 ){ |
| 1345 | append_file_change_line(zFrom, pFileFrom->zName, |
| 1346 | pFileFrom->zUuid, 0, 0, pCfg, 0); |
| 1347 | } |
| 1348 | pFileFrom = manifest_file_next(pFrom, 0); |
| 1349 | }else if( cmp>0 ){ |
| 1350 | if( !zGlob || sqlite3_strglob(zGlob, pFileTo->zName)==0 ){ |
| 1351 | append_file_change_line(zTo, pFileTo->zName, |
| 1352 | 0, pFileTo->zUuid, 0, pCfg, |
| 1353 | manifest_file_mperm(pFileTo)); |
| 1354 | } |
| 1355 | pFileTo = manifest_file_next(pTo, 0); |
| 1356 | }else if( fossil_strcmp(pFileFrom->zUuid, pFileTo->zUuid)==0 ){ |
| 1357 | pFileFrom = manifest_file_next(pFrom, 0); |
| 1358 | pFileTo = manifest_file_next(pTo, 0); |
| 1359 | }else{ |
| 1360 | if(!zGlob || (sqlite3_strglob(zGlob, pFileFrom->zName)==0 |
| 1361 | || sqlite3_strglob(zGlob, pFileTo->zName)==0) ){ |
| 1362 | append_file_change_line(zFrom, pFileFrom->zName, |
| 1363 | pFileFrom->zUuid, |
| 1364 | pFileTo->zUuid, 0, pCfg, |
| 1365 | manifest_file_mperm(pFileTo)); |
| 1366 | } |
| 1367 | pFileFrom = manifest_file_next(pFrom, 0); |
| 1368 | pFileTo = manifest_file_next(pTo, 0); |
| 1369 | } |
| 1370 | } |
| 1371 | manifest_destroy(pFrom); |
| 1372 | manifest_destroy(pTo); |
| 1373 | append_diff_javascript(diffType); |
| 1374 | style_finish_page(); |
| 1375 | } |
| 1376 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -1193,10 +1193,11 @@ | |
| 1193 | const char *zBranch; |
| 1194 | const char *zFrom; |
| 1195 | const char *zTo; |
| 1196 | const char *zRe; |
| 1197 | const char *zGlob; |
| 1198 | Glob * pGlob = 0; |
| 1199 | char *zMergeOrigin = 0; |
| 1200 | ReCompiled *pRe = 0; |
| 1201 | DiffConfig DCfg, *pCfg = 0; |
| 1202 | int graphFlags = 0; |
| 1203 | Blob qp; |
| @@ -1244,15 +1245,18 @@ | |
| 1245 | pTo = pFrom; |
| 1246 | pFrom = pTemp; |
| 1247 | zTo = zFrom; |
| 1248 | zFrom = zTemp; |
| 1249 | } |
| 1250 | if( P("clearglob") ){ |
| 1251 | zGlob = 0; |
| 1252 | }else if( zGlob){ |
| 1253 | if( !*zGlob ){ |
| 1254 | zGlob = NULL; |
| 1255 | }else{ |
| 1256 | blob_appendf(&qp, "&glob=%T", zGlob); |
| 1257 | pGlob = glob_create(zGlob); |
| 1258 | } |
| 1259 | } |
| 1260 | if( PB("nc") ){ |
| 1261 | graphFlags |= TIMELINE_NOCOLOR; |
| 1262 | blob_appendf(&qp, "&nc"); |
| @@ -1277,11 +1281,11 @@ | |
| 1281 | } |
| 1282 | if( zBranch==0 ){ |
| 1283 | style_submenu_element("Invert","%R/vdiff?diff=%d&inv&%b", diffType, &qp); |
| 1284 | } |
| 1285 | if( zGlob ){ |
| 1286 | style_submenu_element("Clear glob", "%R/vdiff?diff=%d&%b&clearglob", diffType, &qp); |
| 1287 | }else{ |
| 1288 | style_submenu_element("Patch", "%R/vpatch?from=%T&to=%T%s", zFrom, zTo, |
| 1289 | (DCfg.diffFlags & DIFF_IGNORE_ALLWS)?"&w":""); |
| 1290 | } |
| 1291 | if( diffType!=0 ){ |
| @@ -1339,37 +1343,38 @@ | |
| 1343 | cmp = -1; |
| 1344 | }else{ |
| 1345 | cmp = fossil_strcmp(pFileFrom->zName, pFileTo->zName); |
| 1346 | } |
| 1347 | if( cmp<0 ){ |
| 1348 | if( !pGlob || glob_match(pGlob, pFileFrom->zName) ){ |
| 1349 | append_file_change_line(zFrom, pFileFrom->zName, |
| 1350 | pFileFrom->zUuid, 0, 0, pCfg, 0); |
| 1351 | } |
| 1352 | pFileFrom = manifest_file_next(pFrom, 0); |
| 1353 | }else if( cmp>0 ){ |
| 1354 | if( !pGlob || glob_match(pGlob, pFileTo->zName) ){ |
| 1355 | append_file_change_line(zTo, pFileTo->zName, |
| 1356 | 0, pFileTo->zUuid, 0, pCfg, |
| 1357 | manifest_file_mperm(pFileTo)); |
| 1358 | } |
| 1359 | pFileTo = manifest_file_next(pTo, 0); |
| 1360 | }else if( fossil_strcmp(pFileFrom->zUuid, pFileTo->zUuid)==0 ){ |
| 1361 | pFileFrom = manifest_file_next(pFrom, 0); |
| 1362 | pFileTo = manifest_file_next(pTo, 0); |
| 1363 | }else{ |
| 1364 | if(!pGlob || (glob_match(pGlob, pFileFrom->zName) |
| 1365 | || glob_match(pGlob, pFileTo->zName)) ){ |
| 1366 | append_file_change_line(zFrom, pFileFrom->zName, |
| 1367 | pFileFrom->zUuid, |
| 1368 | pFileTo->zUuid, 0, pCfg, |
| 1369 | manifest_file_mperm(pFileTo)); |
| 1370 | } |
| 1371 | pFileFrom = manifest_file_next(pFrom, 0); |
| 1372 | pFileTo = manifest_file_next(pTo, 0); |
| 1373 | } |
| 1374 | } |
| 1375 | glob_free(pGlob); |
| 1376 | manifest_destroy(pFrom); |
| 1377 | manifest_destroy(pTo); |
| 1378 | append_diff_javascript(diffType); |
| 1379 | style_finish_page(); |
| 1380 | } |
| 1381 |