Fossil SCM
Updates to the /vdiff page with the branch=BRANCH query parameter so that it uses merge-in: instead of root: and thus excludes merge-in check-ins from the diff.
Commit
b36dc6f1215d6833be46dd6892b06f88cea4821132cb06d3d656cbaf55b97ebd
Parent
dcd8f1d8f494601…
1 file changed
+29
-6
+29
-6
| --- src/info.c | ||
| +++ src/info.c | ||
| @@ -1207,10 +1207,11 @@ | ||
| 1207 | 1207 | const char *zTo; |
| 1208 | 1208 | const char *zRe; |
| 1209 | 1209 | const char *zW; |
| 1210 | 1210 | const char *zGlob; |
| 1211 | 1211 | char *zQuery; |
| 1212 | + char *zMergeOrigin = 0; | |
| 1212 | 1213 | ReCompiled *pRe = 0; |
| 1213 | 1214 | login_check_credentials(); |
| 1214 | 1215 | if( !g.perm.Read ){ login_needed(g.anon.Read); return; } |
| 1215 | 1216 | login_anonymous_available(); |
| 1216 | 1217 | load_control(); |
| @@ -1221,11 +1222,12 @@ | ||
| 1221 | 1222 | if( zRe ) re_compile(&pRe, zRe, 0); |
| 1222 | 1223 | zBranch = P("branch"); |
| 1223 | 1224 | if( zBranch && zBranch[0]==0 ) zBranch = 0; |
| 1224 | 1225 | if( zBranch ){ |
| 1225 | 1226 | zQuery = mprintf("branch=%T", zBranch); |
| 1226 | - cgi_replace_parameter("from", mprintf("root:%s", zBranch)); | |
| 1227 | + zMergeOrigin = mprintf("merge-in:%s", zBranch); | |
| 1228 | + cgi_replace_parameter("from", zMergeOrigin); | |
| 1227 | 1229 | cgi_replace_parameter("to", zBranch); |
| 1228 | 1230 | }else{ |
| 1229 | 1231 | zQuery = mprintf("from=%T&to=%T",PD("from",""),PD("to","")); |
| 1230 | 1232 | } |
| 1231 | 1233 | pTo = vdiff_parse_manifest("to", &ridTo); |
| @@ -1272,16 +1274,37 @@ | ||
| 1272 | 1274 | style_submenu_element("Patch", "%R/vpatch?from=%T&to=%T%s", zFrom, zTo, zW); |
| 1273 | 1275 | } |
| 1274 | 1276 | if( diffType!=0 ){ |
| 1275 | 1277 | style_submenu_checkbox("w", "Ignore Whitespace", 0, 0); |
| 1276 | 1278 | } |
| 1277 | - style_header("Check-in Differences"); | |
| 1279 | + if( zBranch ){ | |
| 1280 | + style_header("Changes On Branch %h", zBranch); | |
| 1281 | + }else{ | |
| 1282 | + style_header("Check-in Differences"); | |
| 1283 | + } | |
| 1278 | 1284 | if( P("nohdr")==0 ){ |
| 1279 | - @ <h2>Difference From <span class='timelineSelected'>\ | |
| 1280 | - @ %z(href("%R/info/%h",zFrom))%h(zFrom)</a></span> | |
| 1281 | - @ To <span class='timelineSelected timelineSecondary'>\ | |
| 1282 | - @ %z(href("%R/info/%h",zTo))%h(zTo)</a></span></h2> | |
| 1285 | + if( zBranch ){ | |
| 1286 | + char *zRealBranch = branch_of_rid(ridTo); | |
| 1287 | + char *zToUuid = rid_to_uuid(ridTo); | |
| 1288 | + char *zFromUuid = rid_to_uuid(ridFrom); | |
| 1289 | + @ <h2>Changes In Branch \ | |
| 1290 | + @ %z(href("%R/timeline?r=%T",zRealBranch))%h(zRealBranch)</a> | |
| 1291 | + if( strcmp(zRealBranch,zBranch)!=0 ){ | |
| 1292 | + @ Through %z(href("%R/info/%!S",zToUuid))[%S(zToUuid)]</a> | |
| 1293 | + } | |
| 1294 | + @ Excluding Merge-Ins</h2> | |
| 1295 | + @ <p>This is equivalent to a difference from | |
| 1296 | + @ <span class='timelineSelected'>\ | |
| 1297 | + @ %z(href("%R/info/%!S",zFromUuid))%S(zFromUuid)</a></span> | |
| 1298 | + @ to <span class='timelineSelected timelineSecondary'>\ | |
| 1299 | + @ %z(href("%R/info/%!S",zToUuid))%S(zToUuid)</a></span></p> | |
| 1300 | + }else{ | |
| 1301 | + @ <h2>Difference From <span class='timelineSelected'>\ | |
| 1302 | + @ %z(href("%R/info/%h",zFrom))%h(zFrom)</a></span> | |
| 1303 | + @ To <span class='timelineSelected timelineSecondary'>\ | |
| 1304 | + @ %z(href("%R/info/%h",zTo))%h(zTo)</a></span></h2> | |
| 1305 | + } | |
| 1283 | 1306 | render_checkin_context(ridFrom, ridTo, 0); |
| 1284 | 1307 | if( pRe ){ |
| 1285 | 1308 | @ <p><b>Only differences that match regular expression "%h(zRe)" |
| 1286 | 1309 | @ are shown.</b></p> |
| 1287 | 1310 | } |
| 1288 | 1311 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -1207,10 +1207,11 @@ | |
| 1207 | const char *zTo; |
| 1208 | const char *zRe; |
| 1209 | const char *zW; |
| 1210 | const char *zGlob; |
| 1211 | char *zQuery; |
| 1212 | ReCompiled *pRe = 0; |
| 1213 | login_check_credentials(); |
| 1214 | if( !g.perm.Read ){ login_needed(g.anon.Read); return; } |
| 1215 | login_anonymous_available(); |
| 1216 | load_control(); |
| @@ -1221,11 +1222,12 @@ | |
| 1221 | if( zRe ) re_compile(&pRe, zRe, 0); |
| 1222 | zBranch = P("branch"); |
| 1223 | if( zBranch && zBranch[0]==0 ) zBranch = 0; |
| 1224 | if( zBranch ){ |
| 1225 | zQuery = mprintf("branch=%T", zBranch); |
| 1226 | cgi_replace_parameter("from", mprintf("root:%s", zBranch)); |
| 1227 | cgi_replace_parameter("to", zBranch); |
| 1228 | }else{ |
| 1229 | zQuery = mprintf("from=%T&to=%T",PD("from",""),PD("to","")); |
| 1230 | } |
| 1231 | pTo = vdiff_parse_manifest("to", &ridTo); |
| @@ -1272,16 +1274,37 @@ | |
| 1272 | style_submenu_element("Patch", "%R/vpatch?from=%T&to=%T%s", zFrom, zTo, zW); |
| 1273 | } |
| 1274 | if( diffType!=0 ){ |
| 1275 | style_submenu_checkbox("w", "Ignore Whitespace", 0, 0); |
| 1276 | } |
| 1277 | style_header("Check-in Differences"); |
| 1278 | if( P("nohdr")==0 ){ |
| 1279 | @ <h2>Difference From <span class='timelineSelected'>\ |
| 1280 | @ %z(href("%R/info/%h",zFrom))%h(zFrom)</a></span> |
| 1281 | @ To <span class='timelineSelected timelineSecondary'>\ |
| 1282 | @ %z(href("%R/info/%h",zTo))%h(zTo)</a></span></h2> |
| 1283 | render_checkin_context(ridFrom, ridTo, 0); |
| 1284 | if( pRe ){ |
| 1285 | @ <p><b>Only differences that match regular expression "%h(zRe)" |
| 1286 | @ are shown.</b></p> |
| 1287 | } |
| 1288 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -1207,10 +1207,11 @@ | |
| 1207 | const char *zTo; |
| 1208 | const char *zRe; |
| 1209 | const char *zW; |
| 1210 | const char *zGlob; |
| 1211 | char *zQuery; |
| 1212 | char *zMergeOrigin = 0; |
| 1213 | ReCompiled *pRe = 0; |
| 1214 | login_check_credentials(); |
| 1215 | if( !g.perm.Read ){ login_needed(g.anon.Read); return; } |
| 1216 | login_anonymous_available(); |
| 1217 | load_control(); |
| @@ -1221,11 +1222,12 @@ | |
| 1222 | if( zRe ) re_compile(&pRe, zRe, 0); |
| 1223 | zBranch = P("branch"); |
| 1224 | if( zBranch && zBranch[0]==0 ) zBranch = 0; |
| 1225 | if( zBranch ){ |
| 1226 | zQuery = mprintf("branch=%T", zBranch); |
| 1227 | zMergeOrigin = mprintf("merge-in:%s", zBranch); |
| 1228 | cgi_replace_parameter("from", zMergeOrigin); |
| 1229 | cgi_replace_parameter("to", zBranch); |
| 1230 | }else{ |
| 1231 | zQuery = mprintf("from=%T&to=%T",PD("from",""),PD("to","")); |
| 1232 | } |
| 1233 | pTo = vdiff_parse_manifest("to", &ridTo); |
| @@ -1272,16 +1274,37 @@ | |
| 1274 | style_submenu_element("Patch", "%R/vpatch?from=%T&to=%T%s", zFrom, zTo, zW); |
| 1275 | } |
| 1276 | if( diffType!=0 ){ |
| 1277 | style_submenu_checkbox("w", "Ignore Whitespace", 0, 0); |
| 1278 | } |
| 1279 | if( zBranch ){ |
| 1280 | style_header("Changes On Branch %h", zBranch); |
| 1281 | }else{ |
| 1282 | style_header("Check-in Differences"); |
| 1283 | } |
| 1284 | if( P("nohdr")==0 ){ |
| 1285 | if( zBranch ){ |
| 1286 | char *zRealBranch = branch_of_rid(ridTo); |
| 1287 | char *zToUuid = rid_to_uuid(ridTo); |
| 1288 | char *zFromUuid = rid_to_uuid(ridFrom); |
| 1289 | @ <h2>Changes In Branch \ |
| 1290 | @ %z(href("%R/timeline?r=%T",zRealBranch))%h(zRealBranch)</a> |
| 1291 | if( strcmp(zRealBranch,zBranch)!=0 ){ |
| 1292 | @ Through %z(href("%R/info/%!S",zToUuid))[%S(zToUuid)]</a> |
| 1293 | } |
| 1294 | @ Excluding Merge-Ins</h2> |
| 1295 | @ <p>This is equivalent to a difference from |
| 1296 | @ <span class='timelineSelected'>\ |
| 1297 | @ %z(href("%R/info/%!S",zFromUuid))%S(zFromUuid)</a></span> |
| 1298 | @ to <span class='timelineSelected timelineSecondary'>\ |
| 1299 | @ %z(href("%R/info/%!S",zToUuid))%S(zToUuid)</a></span></p> |
| 1300 | }else{ |
| 1301 | @ <h2>Difference From <span class='timelineSelected'>\ |
| 1302 | @ %z(href("%R/info/%h",zFrom))%h(zFrom)</a></span> |
| 1303 | @ To <span class='timelineSelected timelineSecondary'>\ |
| 1304 | @ %z(href("%R/info/%h",zTo))%h(zTo)</a></span></h2> |
| 1305 | } |
| 1306 | render_checkin_context(ridFrom, ridTo, 0); |
| 1307 | if( pRe ){ |
| 1308 | @ <p><b>Only differences that match regular expression "%h(zRe)" |
| 1309 | @ are shown.</b></p> |
| 1310 | } |
| 1311 |