Fossil SCM
Add the debug= query parameter to the finfo file timeline page. Setting the 1 bit on debug causes the fid, pid, and mid of each file change to be displayed in the timeline.
Commit
badd78e167add873b03907cef2100eb059364b10
Parent
0e812a8edd5ce31…
1 file changed
+13
+13
| --- src/finfo.c | ||
| +++ src/finfo.c | ||
| @@ -204,10 +204,12 @@ | ||
| 204 | 204 | db_finalize(&q); |
| 205 | 205 | blob_reset(&fname); |
| 206 | 206 | } |
| 207 | 207 | } |
| 208 | 208 | |
| 209 | +/* Values for the debug= query parameter to finfo */ | |
| 210 | +#define FINFO_DEBUG_MLINK 0x01 | |
| 209 | 211 | |
| 210 | 212 | /* |
| 211 | 213 | ** WEBPAGE: finfo |
| 212 | 214 | ** URL: /finfo?name=FILENAME |
| 213 | 215 | ** |
| @@ -234,10 +236,11 @@ | ||
| 234 | 236 | HQuery url; |
| 235 | 237 | GraphContext *pGraph; |
| 236 | 238 | int brBg = P("brbg")!=0; |
| 237 | 239 | int uBg = P("ubg")!=0; |
| 238 | 240 | int firstChngOnly = atoi(PD("fco","1"))!=0; |
| 241 | + int fDebug = atoi(PD("debug","0")); | |
| 239 | 242 | |
| 240 | 243 | login_check_credentials(); |
| 241 | 244 | if( !g.perm.Read ){ login_needed(); return; } |
| 242 | 245 | style_header("File History"); |
| 243 | 246 | login_anonymous_available(); |
| @@ -263,10 +266,13 @@ | ||
| 263 | 266 | " event.bgcolor," /* Background color */ |
| 264 | 267 | " (SELECT value FROM tagxref WHERE tagid=%d AND tagtype>0" |
| 265 | 268 | " AND tagxref.rid=mlink.mid)", /* Tags */ |
| 266 | 269 | TAG_BRANCH |
| 267 | 270 | ); |
| 271 | + if( fDebug & FINFO_DEBUG_MLINK ){ | |
| 272 | + blob_appendf(&sql, ", mlink.mid"); | |
| 273 | + } | |
| 268 | 274 | if( firstChngOnly ){ |
| 269 | 275 | blob_appendf(&sql, ", min(event.mtime)"); |
| 270 | 276 | } |
| 271 | 277 | blob_appendf(&sql, |
| 272 | 278 | " FROM mlink, event" |
| @@ -316,14 +322,18 @@ | ||
| 316 | 322 | const char *zPUuid = db_column_text(&q, 5); |
| 317 | 323 | const char *zUuid = db_column_text(&q, 6); |
| 318 | 324 | const char *zCkin = db_column_text(&q,7); |
| 319 | 325 | const char *zBgClr = db_column_text(&q, 8); |
| 320 | 326 | const char *zBr = db_column_text(&q, 9); |
| 327 | + int fmid = 0; | |
| 321 | 328 | int gidx; |
| 322 | 329 | char zTime[10]; |
| 323 | 330 | char zShort[20]; |
| 324 | 331 | char zShortCkin[20]; |
| 332 | + if( fDebug & FINFO_DEBUG_MLINK ){ | |
| 333 | + fmid = db_column_int(&q,10); | |
| 334 | + } | |
| 325 | 335 | if( zBr==0 ) zBr = "trunk"; |
| 326 | 336 | if( uBg ){ |
| 327 | 337 | zBgClr = hash_color(zUser); |
| 328 | 338 | }else if( brBg || zBgClr==0 || zBgClr[0]==0 ){ |
| 329 | 339 | zBgClr = strcmp(zBr,"trunk")==0 ? "" : hash_color(zBr); |
| @@ -362,10 +372,13 @@ | ||
| 362 | 372 | @ %z(href("%R/fdiff?v1=%S&v2=%S",zPUuid,zUuid))[diff]</a> |
| 363 | 373 | } |
| 364 | 374 | @ %z(href("%R/annotate?checkin=%S&filename=%h",zCkin,z)) |
| 365 | 375 | @ [annotate]</a> |
| 366 | 376 | } |
| 377 | + if( fDebug & FINFO_DEBUG_MLINK ){ | |
| 378 | + @ fid=%d(frid), pid=%d(fpid), mid=%d(fmid) | |
| 379 | + } | |
| 367 | 380 | @ </td></tr> |
| 368 | 381 | } |
| 369 | 382 | db_finalize(&q); |
| 370 | 383 | if( pGraph ){ |
| 371 | 384 | graph_finish(pGraph, 0); |
| 372 | 385 |
| --- src/finfo.c | |
| +++ src/finfo.c | |
| @@ -204,10 +204,12 @@ | |
| 204 | db_finalize(&q); |
| 205 | blob_reset(&fname); |
| 206 | } |
| 207 | } |
| 208 | |
| 209 | |
| 210 | /* |
| 211 | ** WEBPAGE: finfo |
| 212 | ** URL: /finfo?name=FILENAME |
| 213 | ** |
| @@ -234,10 +236,11 @@ | |
| 234 | HQuery url; |
| 235 | GraphContext *pGraph; |
| 236 | int brBg = P("brbg")!=0; |
| 237 | int uBg = P("ubg")!=0; |
| 238 | int firstChngOnly = atoi(PD("fco","1"))!=0; |
| 239 | |
| 240 | login_check_credentials(); |
| 241 | if( !g.perm.Read ){ login_needed(); return; } |
| 242 | style_header("File History"); |
| 243 | login_anonymous_available(); |
| @@ -263,10 +266,13 @@ | |
| 263 | " event.bgcolor," /* Background color */ |
| 264 | " (SELECT value FROM tagxref WHERE tagid=%d AND tagtype>0" |
| 265 | " AND tagxref.rid=mlink.mid)", /* Tags */ |
| 266 | TAG_BRANCH |
| 267 | ); |
| 268 | if( firstChngOnly ){ |
| 269 | blob_appendf(&sql, ", min(event.mtime)"); |
| 270 | } |
| 271 | blob_appendf(&sql, |
| 272 | " FROM mlink, event" |
| @@ -316,14 +322,18 @@ | |
| 316 | const char *zPUuid = db_column_text(&q, 5); |
| 317 | const char *zUuid = db_column_text(&q, 6); |
| 318 | const char *zCkin = db_column_text(&q,7); |
| 319 | const char *zBgClr = db_column_text(&q, 8); |
| 320 | const char *zBr = db_column_text(&q, 9); |
| 321 | int gidx; |
| 322 | char zTime[10]; |
| 323 | char zShort[20]; |
| 324 | char zShortCkin[20]; |
| 325 | if( zBr==0 ) zBr = "trunk"; |
| 326 | if( uBg ){ |
| 327 | zBgClr = hash_color(zUser); |
| 328 | }else if( brBg || zBgClr==0 || zBgClr[0]==0 ){ |
| 329 | zBgClr = strcmp(zBr,"trunk")==0 ? "" : hash_color(zBr); |
| @@ -362,10 +372,13 @@ | |
| 362 | @ %z(href("%R/fdiff?v1=%S&v2=%S",zPUuid,zUuid))[diff]</a> |
| 363 | } |
| 364 | @ %z(href("%R/annotate?checkin=%S&filename=%h",zCkin,z)) |
| 365 | @ [annotate]</a> |
| 366 | } |
| 367 | @ </td></tr> |
| 368 | } |
| 369 | db_finalize(&q); |
| 370 | if( pGraph ){ |
| 371 | graph_finish(pGraph, 0); |
| 372 |
| --- src/finfo.c | |
| +++ src/finfo.c | |
| @@ -204,10 +204,12 @@ | |
| 204 | db_finalize(&q); |
| 205 | blob_reset(&fname); |
| 206 | } |
| 207 | } |
| 208 | |
| 209 | /* Values for the debug= query parameter to finfo */ |
| 210 | #define FINFO_DEBUG_MLINK 0x01 |
| 211 | |
| 212 | /* |
| 213 | ** WEBPAGE: finfo |
| 214 | ** URL: /finfo?name=FILENAME |
| 215 | ** |
| @@ -234,10 +236,11 @@ | |
| 236 | HQuery url; |
| 237 | GraphContext *pGraph; |
| 238 | int brBg = P("brbg")!=0; |
| 239 | int uBg = P("ubg")!=0; |
| 240 | int firstChngOnly = atoi(PD("fco","1"))!=0; |
| 241 | int fDebug = atoi(PD("debug","0")); |
| 242 | |
| 243 | login_check_credentials(); |
| 244 | if( !g.perm.Read ){ login_needed(); return; } |
| 245 | style_header("File History"); |
| 246 | login_anonymous_available(); |
| @@ -263,10 +266,13 @@ | |
| 266 | " event.bgcolor," /* Background color */ |
| 267 | " (SELECT value FROM tagxref WHERE tagid=%d AND tagtype>0" |
| 268 | " AND tagxref.rid=mlink.mid)", /* Tags */ |
| 269 | TAG_BRANCH |
| 270 | ); |
| 271 | if( fDebug & FINFO_DEBUG_MLINK ){ |
| 272 | blob_appendf(&sql, ", mlink.mid"); |
| 273 | } |
| 274 | if( firstChngOnly ){ |
| 275 | blob_appendf(&sql, ", min(event.mtime)"); |
| 276 | } |
| 277 | blob_appendf(&sql, |
| 278 | " FROM mlink, event" |
| @@ -316,14 +322,18 @@ | |
| 322 | const char *zPUuid = db_column_text(&q, 5); |
| 323 | const char *zUuid = db_column_text(&q, 6); |
| 324 | const char *zCkin = db_column_text(&q,7); |
| 325 | const char *zBgClr = db_column_text(&q, 8); |
| 326 | const char *zBr = db_column_text(&q, 9); |
| 327 | int fmid = 0; |
| 328 | int gidx; |
| 329 | char zTime[10]; |
| 330 | char zShort[20]; |
| 331 | char zShortCkin[20]; |
| 332 | if( fDebug & FINFO_DEBUG_MLINK ){ |
| 333 | fmid = db_column_int(&q,10); |
| 334 | } |
| 335 | if( zBr==0 ) zBr = "trunk"; |
| 336 | if( uBg ){ |
| 337 | zBgClr = hash_color(zUser); |
| 338 | }else if( brBg || zBgClr==0 || zBgClr[0]==0 ){ |
| 339 | zBgClr = strcmp(zBr,"trunk")==0 ? "" : hash_color(zBr); |
| @@ -362,10 +372,13 @@ | |
| 372 | @ %z(href("%R/fdiff?v1=%S&v2=%S",zPUuid,zUuid))[diff]</a> |
| 373 | } |
| 374 | @ %z(href("%R/annotate?checkin=%S&filename=%h",zCkin,z)) |
| 375 | @ [annotate]</a> |
| 376 | } |
| 377 | if( fDebug & FINFO_DEBUG_MLINK ){ |
| 378 | @ fid=%d(frid), pid=%d(fpid), mid=%d(fmid) |
| 379 | } |
| 380 | @ </td></tr> |
| 381 | } |
| 382 | db_finalize(&q); |
| 383 | if( pGraph ){ |
| 384 | graph_finish(pGraph, 0); |
| 385 |