Fossil SCM
Improvements to file history display in the web interface.
Commit
601c15421a4a5ca53e86158fe5cbcd54ce92fc54
Parent
ee990ebb99ecfab…
2 files changed
+24
-8
+1
+24
-8
| --- src/finfo.c | ||
| +++ src/finfo.c | ||
| @@ -284,12 +284,13 @@ | ||
| 284 | 284 | style_header("File History"); |
| 285 | 285 | login_anonymous_available(); |
| 286 | 286 | url_initialize(&url, "finfo"); |
| 287 | 287 | if( brBg ) url_add_parameter(&url, "brbg", 0); |
| 288 | 288 | if( uBg ) url_add_parameter(&url, "ubg", 0); |
| 289 | - if( firstChngOnly ) url_add_parameter(&url, "fco", "0"); | |
| 290 | 289 | baseCheckin = name_to_rid_www("ci"); |
| 290 | + if( baseCheckin ) firstChngOnly = 1; | |
| 291 | + if( firstChngOnly ) url_add_parameter(&url, "fco", "0"); | |
| 291 | 292 | |
| 292 | 293 | zPrevDate[0] = 0; |
| 293 | 294 | zFilename = PD("name",""); |
| 294 | 295 | url_add_parameter(&url, "name", zFilename); |
| 295 | 296 | blob_zero(&sql); |
| @@ -296,11 +297,11 @@ | ||
| 296 | 297 | blob_appendf(&sql, |
| 297 | 298 | "SELECT" |
| 298 | 299 | " datetime(event.mtime,'localtime')," /* Date of change */ |
| 299 | 300 | " coalesce(event.ecomment, event.comment)," /* Check-in comment */ |
| 300 | 301 | " coalesce(event.euser, event.user)," /* User who made chng */ |
| 301 | - " mlink.pid," /* Parent rid */ | |
| 302 | + " mlink.pid," /* Parent file rid */ | |
| 302 | 303 | " mlink.fid," /* File rid */ |
| 303 | 304 | " (SELECT uuid FROM blob WHERE rid=mlink.pid)," /* Parent file uuid */ |
| 304 | 305 | " (SELECT uuid FROM blob WHERE rid=mlink.fid)," /* Current file uuid */ |
| 305 | 306 | " (SELECT uuid FROM blob WHERE rid=mlink.mid)," /* Check-in uuid */ |
| 306 | 307 | " event.bgcolor," /* Background color */ |
| @@ -309,11 +310,20 @@ | ||
| 309 | 310 | " mlink.mid," /* check-in ID */ |
| 310 | 311 | " mlink.pfnid", /* Previous filename */ |
| 311 | 312 | TAG_BRANCH |
| 312 | 313 | ); |
| 313 | 314 | if( firstChngOnly ){ |
| 315 | +#if 0 | |
| 314 | 316 | blob_appendf(&sql, ", min(event.mtime)"); |
| 317 | +#else | |
| 318 | + blob_appendf(&sql, | |
| 319 | + ", min(CASE (SELECT value FROM tagxref" | |
| 320 | + " WHERE tagtype>0 AND tagid=%d" | |
| 321 | + " AND tagxref.rid=mlink.mid)" | |
| 322 | + " WHEN 'trunk' THEN event.mtime-10000 ELSE event.mtime END)", | |
| 323 | + TAG_BRANCH); | |
| 324 | +#endif | |
| 315 | 325 | } |
| 316 | 326 | blob_appendf(&sql, |
| 317 | 327 | " FROM mlink, event" |
| 318 | 328 | " WHERE mlink.fnid IN (SELECT fnid FROM filename WHERE name=%Q)" |
| 319 | 329 | " AND event.objid=mlink.mid", |
| @@ -337,18 +347,24 @@ | ||
| 337 | 347 | blob_appendf(&sql," ORDER BY event.mtime DESC /*sort*/"); |
| 338 | 348 | if( (n = atoi(PD("n","0")))>0 ){ |
| 339 | 349 | blob_appendf(&sql, " LIMIT %d", n); |
| 340 | 350 | url_add_parameter(&url, "n", P("n")); |
| 341 | 351 | } |
| 342 | - if( firstChngOnly ){ | |
| 343 | - style_submenu_element("Full", "Show all changes","%s", | |
| 344 | - url_render(&url, "fco", "0", 0, 0)); | |
| 345 | - }else{ | |
| 346 | - style_submenu_element("Simplified", "Show only first use of a change","%s", | |
| 347 | - url_render(&url, "fco", "1", 0, 0)); | |
| 352 | + if( baseCheckin==0 ){ | |
| 353 | + if( firstChngOnly ){ | |
| 354 | + style_submenu_element("Full", "Show all changes","%s", | |
| 355 | + url_render(&url, "fco", "0", 0, 0)); | |
| 356 | + }else{ | |
| 357 | + style_submenu_element("Simplified", | |
| 358 | + "Show only first use of a change","%s", | |
| 359 | + url_render(&url, "fco", "1", 0, 0)); | |
| 360 | + } | |
| 348 | 361 | } |
| 349 | 362 | db_prepare(&q, blob_str(&sql)); |
| 363 | + if( P("showsql")!=0 ){ | |
| 364 | + @ <p>SQL: %h(blob_str(&sql))</p> | |
| 365 | + } | |
| 350 | 366 | blob_reset(&sql); |
| 351 | 367 | blob_zero(&title); |
| 352 | 368 | if( baseCheckin ){ |
| 353 | 369 | char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", baseCheckin); |
| 354 | 370 | char *zLink = href("%R/info/%S", zUuid); |
| 355 | 371 |
| --- src/finfo.c | |
| +++ src/finfo.c | |
| @@ -284,12 +284,13 @@ | |
| 284 | style_header("File History"); |
| 285 | login_anonymous_available(); |
| 286 | url_initialize(&url, "finfo"); |
| 287 | if( brBg ) url_add_parameter(&url, "brbg", 0); |
| 288 | if( uBg ) url_add_parameter(&url, "ubg", 0); |
| 289 | if( firstChngOnly ) url_add_parameter(&url, "fco", "0"); |
| 290 | baseCheckin = name_to_rid_www("ci"); |
| 291 | |
| 292 | zPrevDate[0] = 0; |
| 293 | zFilename = PD("name",""); |
| 294 | url_add_parameter(&url, "name", zFilename); |
| 295 | blob_zero(&sql); |
| @@ -296,11 +297,11 @@ | |
| 296 | blob_appendf(&sql, |
| 297 | "SELECT" |
| 298 | " datetime(event.mtime,'localtime')," /* Date of change */ |
| 299 | " coalesce(event.ecomment, event.comment)," /* Check-in comment */ |
| 300 | " coalesce(event.euser, event.user)," /* User who made chng */ |
| 301 | " mlink.pid," /* Parent rid */ |
| 302 | " mlink.fid," /* File rid */ |
| 303 | " (SELECT uuid FROM blob WHERE rid=mlink.pid)," /* Parent file uuid */ |
| 304 | " (SELECT uuid FROM blob WHERE rid=mlink.fid)," /* Current file uuid */ |
| 305 | " (SELECT uuid FROM blob WHERE rid=mlink.mid)," /* Check-in uuid */ |
| 306 | " event.bgcolor," /* Background color */ |
| @@ -309,11 +310,20 @@ | |
| 309 | " mlink.mid," /* check-in ID */ |
| 310 | " mlink.pfnid", /* Previous filename */ |
| 311 | TAG_BRANCH |
| 312 | ); |
| 313 | if( firstChngOnly ){ |
| 314 | blob_appendf(&sql, ", min(event.mtime)"); |
| 315 | } |
| 316 | blob_appendf(&sql, |
| 317 | " FROM mlink, event" |
| 318 | " WHERE mlink.fnid IN (SELECT fnid FROM filename WHERE name=%Q)" |
| 319 | " AND event.objid=mlink.mid", |
| @@ -337,18 +347,24 @@ | |
| 337 | blob_appendf(&sql," ORDER BY event.mtime DESC /*sort*/"); |
| 338 | if( (n = atoi(PD("n","0")))>0 ){ |
| 339 | blob_appendf(&sql, " LIMIT %d", n); |
| 340 | url_add_parameter(&url, "n", P("n")); |
| 341 | } |
| 342 | if( firstChngOnly ){ |
| 343 | style_submenu_element("Full", "Show all changes","%s", |
| 344 | url_render(&url, "fco", "0", 0, 0)); |
| 345 | }else{ |
| 346 | style_submenu_element("Simplified", "Show only first use of a change","%s", |
| 347 | url_render(&url, "fco", "1", 0, 0)); |
| 348 | } |
| 349 | db_prepare(&q, blob_str(&sql)); |
| 350 | blob_reset(&sql); |
| 351 | blob_zero(&title); |
| 352 | if( baseCheckin ){ |
| 353 | char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", baseCheckin); |
| 354 | char *zLink = href("%R/info/%S", zUuid); |
| 355 |
| --- src/finfo.c | |
| +++ src/finfo.c | |
| @@ -284,12 +284,13 @@ | |
| 284 | style_header("File History"); |
| 285 | login_anonymous_available(); |
| 286 | url_initialize(&url, "finfo"); |
| 287 | if( brBg ) url_add_parameter(&url, "brbg", 0); |
| 288 | if( uBg ) url_add_parameter(&url, "ubg", 0); |
| 289 | baseCheckin = name_to_rid_www("ci"); |
| 290 | if( baseCheckin ) firstChngOnly = 1; |
| 291 | if( firstChngOnly ) url_add_parameter(&url, "fco", "0"); |
| 292 | |
| 293 | zPrevDate[0] = 0; |
| 294 | zFilename = PD("name",""); |
| 295 | url_add_parameter(&url, "name", zFilename); |
| 296 | blob_zero(&sql); |
| @@ -296,11 +297,11 @@ | |
| 297 | blob_appendf(&sql, |
| 298 | "SELECT" |
| 299 | " datetime(event.mtime,'localtime')," /* Date of change */ |
| 300 | " coalesce(event.ecomment, event.comment)," /* Check-in comment */ |
| 301 | " coalesce(event.euser, event.user)," /* User who made chng */ |
| 302 | " mlink.pid," /* Parent file rid */ |
| 303 | " mlink.fid," /* File rid */ |
| 304 | " (SELECT uuid FROM blob WHERE rid=mlink.pid)," /* Parent file uuid */ |
| 305 | " (SELECT uuid FROM blob WHERE rid=mlink.fid)," /* Current file uuid */ |
| 306 | " (SELECT uuid FROM blob WHERE rid=mlink.mid)," /* Check-in uuid */ |
| 307 | " event.bgcolor," /* Background color */ |
| @@ -309,11 +310,20 @@ | |
| 310 | " mlink.mid," /* check-in ID */ |
| 311 | " mlink.pfnid", /* Previous filename */ |
| 312 | TAG_BRANCH |
| 313 | ); |
| 314 | if( firstChngOnly ){ |
| 315 | #if 0 |
| 316 | blob_appendf(&sql, ", min(event.mtime)"); |
| 317 | #else |
| 318 | blob_appendf(&sql, |
| 319 | ", min(CASE (SELECT value FROM tagxref" |
| 320 | " WHERE tagtype>0 AND tagid=%d" |
| 321 | " AND tagxref.rid=mlink.mid)" |
| 322 | " WHEN 'trunk' THEN event.mtime-10000 ELSE event.mtime END)", |
| 323 | TAG_BRANCH); |
| 324 | #endif |
| 325 | } |
| 326 | blob_appendf(&sql, |
| 327 | " FROM mlink, event" |
| 328 | " WHERE mlink.fnid IN (SELECT fnid FROM filename WHERE name=%Q)" |
| 329 | " AND event.objid=mlink.mid", |
| @@ -337,18 +347,24 @@ | |
| 347 | blob_appendf(&sql," ORDER BY event.mtime DESC /*sort*/"); |
| 348 | if( (n = atoi(PD("n","0")))>0 ){ |
| 349 | blob_appendf(&sql, " LIMIT %d", n); |
| 350 | url_add_parameter(&url, "n", P("n")); |
| 351 | } |
| 352 | if( baseCheckin==0 ){ |
| 353 | if( firstChngOnly ){ |
| 354 | style_submenu_element("Full", "Show all changes","%s", |
| 355 | url_render(&url, "fco", "0", 0, 0)); |
| 356 | }else{ |
| 357 | style_submenu_element("Simplified", |
| 358 | "Show only first use of a change","%s", |
| 359 | url_render(&url, "fco", "1", 0, 0)); |
| 360 | } |
| 361 | } |
| 362 | db_prepare(&q, blob_str(&sql)); |
| 363 | if( P("showsql")!=0 ){ |
| 364 | @ <p>SQL: %h(blob_str(&sql))</p> |
| 365 | } |
| 366 | blob_reset(&sql); |
| 367 | blob_zero(&title); |
| 368 | if( baseCheckin ){ |
| 369 | char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", baseCheckin); |
| 370 | char *zLink = href("%R/info/%S", zUuid); |
| 371 |
+1
| --- src/info.c | ||
| +++ src/info.c | ||
| @@ -1090,10 +1090,11 @@ | ||
| 1090 | 1090 | @ - %!w(zCom) (user: |
| 1091 | 1091 | hyperlink_to_user(zUser,zDate,")"); |
| 1092 | 1092 | if( g.perm.Hyperlink ){ |
| 1093 | 1093 | @ %z(href("%R/annotate?checkin=%S&filename=%T",zVers,zName)) |
| 1094 | 1094 | @ [annotate]</a> |
| 1095 | + @ %z(href("%R/finfo?name=%T&ci=%S",zName,zVers))[ancestry]</a> | |
| 1095 | 1096 | } |
| 1096 | 1097 | cnt++; |
| 1097 | 1098 | if( pDownloadName && blob_size(pDownloadName)==0 ){ |
| 1098 | 1099 | blob_append(pDownloadName, zName, -1); |
| 1099 | 1100 | } |
| 1100 | 1101 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -1090,10 +1090,11 @@ | |
| 1090 | @ - %!w(zCom) (user: |
| 1091 | hyperlink_to_user(zUser,zDate,")"); |
| 1092 | if( g.perm.Hyperlink ){ |
| 1093 | @ %z(href("%R/annotate?checkin=%S&filename=%T",zVers,zName)) |
| 1094 | @ [annotate]</a> |
| 1095 | } |
| 1096 | cnt++; |
| 1097 | if( pDownloadName && blob_size(pDownloadName)==0 ){ |
| 1098 | blob_append(pDownloadName, zName, -1); |
| 1099 | } |
| 1100 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -1090,10 +1090,11 @@ | |
| 1090 | @ - %!w(zCom) (user: |
| 1091 | hyperlink_to_user(zUser,zDate,")"); |
| 1092 | if( g.perm.Hyperlink ){ |
| 1093 | @ %z(href("%R/annotate?checkin=%S&filename=%T",zVers,zName)) |
| 1094 | @ [annotate]</a> |
| 1095 | @ %z(href("%R/finfo?name=%T&ci=%S",zName,zVers))[ancestry]</a> |
| 1096 | } |
| 1097 | cnt++; |
| 1098 | if( pDownloadName && blob_size(pDownloadName)==0 ){ |
| 1099 | blob_append(pDownloadName, zName, -1); |
| 1100 | } |
| 1101 |