Fossil SCM
Remove the option in /finfo to show all changes to a file. Show the first change only. And do not attempt to put that change on the trunk, but really show the first actual change.
Commit
5f6ee7ce0450f4241d1aaab4f68ccaa3d100e0f3
Parent
3f739d4da7340ec…
1 file changed
+7
-33
+7
-33
| --- src/finfo.c | ||
| +++ src/finfo.c | ||
| @@ -284,11 +284,10 @@ | ||
| 284 | 284 | ** b=DATE Only show changes before DATE |
| 285 | 285 | ** n=NUM Show the first NUM changes only |
| 286 | 286 | ** brbg Background color by branch name |
| 287 | 287 | ** ubg Background color by user name |
| 288 | 288 | ** ci=UUID Ancestors of a particular check-in |
| 289 | -** fco=BOOL Show only first occurrence of each version if true (default) | |
| 290 | 289 | */ |
| 291 | 290 | void finfo_page(void){ |
| 292 | 291 | Stmt q; |
| 293 | 292 | const char *zFilename; |
| 294 | 293 | char zPrevDate[20]; |
| @@ -302,11 +301,10 @@ | ||
| 302 | 301 | Blob sql; |
| 303 | 302 | HQuery url; |
| 304 | 303 | GraphContext *pGraph; |
| 305 | 304 | int brBg = P("brbg")!=0; |
| 306 | 305 | int uBg = P("ubg")!=0; |
| 307 | - int firstChngOnly = atoi(PD("fco","1"))!=0; | |
| 308 | 306 | int fDebug = atoi(PD("debug","0")); |
| 309 | 307 | int fShowId = P("showid")!=0; |
| 310 | 308 | |
| 311 | 309 | login_check_credentials(); |
| 312 | 310 | if( !g.perm.Read ){ login_needed(); return; } |
| @@ -314,13 +312,10 @@ | ||
| 314 | 312 | login_anonymous_available(); |
| 315 | 313 | url_initialize(&url, "finfo"); |
| 316 | 314 | if( brBg ) url_add_parameter(&url, "brbg", 0); |
| 317 | 315 | if( uBg ) url_add_parameter(&url, "ubg", 0); |
| 318 | 316 | baseCheckin = name_to_rid_www("ci"); |
| 319 | - if( baseCheckin ) firstChngOnly = 1; | |
| 320 | - if( !firstChngOnly ) url_add_parameter(&url, "fco", "0"); | |
| 321 | - | |
| 322 | 317 | zPrevDate[0] = 0; |
| 323 | 318 | zFilename = PD("name",""); |
| 324 | 319 | fnid = db_int(0, "SELECT fnid FROM filename WHERE name=%Q", zFilename); |
| 325 | 320 | if( fnid==0 ){ |
| 326 | 321 | @ No such file: %h(zFilename) |
| @@ -329,11 +324,11 @@ | ||
| 329 | 324 | } |
| 330 | 325 | url_add_parameter(&url, "name", zFilename); |
| 331 | 326 | blob_zero(&sql); |
| 332 | 327 | blob_append_sql(&sql, |
| 333 | 328 | "SELECT" |
| 334 | - " datetime(event.mtime%s)," /* Date of change */ | |
| 329 | + " datetime(min(event.mtime)%s)," /* Date of change */ | |
| 335 | 330 | " coalesce(event.ecomment, event.comment)," /* Check-in comment */ |
| 336 | 331 | " coalesce(event.euser, event.user)," /* User who made chng */ |
| 337 | 332 | " mlink.pid," /* Parent file rid */ |
| 338 | 333 | " mlink.fid," /* File rid */ |
| 339 | 334 | " (SELECT uuid FROM blob WHERE rid=mlink.pid)," /* Parent file uuid */ |
| @@ -341,26 +336,15 @@ | ||
| 341 | 336 | " (SELECT uuid FROM blob WHERE rid=mlink.mid)," /* Check-in uuid */ |
| 342 | 337 | " event.bgcolor," /* Background color */ |
| 343 | 338 | " (SELECT value FROM tagxref WHERE tagid=%d AND tagtype>0" |
| 344 | 339 | " AND tagxref.rid=mlink.mid)," /* Branchname */ |
| 345 | 340 | " mlink.mid," /* check-in ID */ |
| 346 | - " mlink.pfnid", /* Previous filename */ | |
| 347 | - timeline_utc(), TAG_BRANCH | |
| 348 | - ); | |
| 349 | - if( firstChngOnly ){ | |
| 350 | - blob_append_sql(&sql, | |
| 351 | - ", min(CASE (SELECT value FROM tagxref" | |
| 352 | - " WHERE tagtype>0 AND tagid=%d" | |
| 353 | - " AND tagxref.rid=mlink.mid)" | |
| 354 | - " WHEN 'trunk' THEN event.mtime-10000 ELSE event.mtime END)", | |
| 355 | - TAG_BRANCH); | |
| 356 | - } | |
| 357 | - blob_append_sql(&sql, | |
| 341 | + " mlink.pfnid" /* Previous filename */ | |
| 358 | 342 | " FROM mlink, event" |
| 359 | 343 | " WHERE mlink.fnid=%d" |
| 360 | 344 | " AND event.objid=mlink.mid", |
| 361 | - fnid | |
| 345 | + timeline_utc(), TAG_BRANCH, fnid | |
| 362 | 346 | ); |
| 363 | 347 | if( baseCheckin ){ |
| 364 | 348 | compute_direct_ancestors(baseCheckin, 10000000); |
| 365 | 349 | blob_append_sql(&sql," AND mlink.mid IN (SELECT rid FROM ancestor)"); |
| 366 | 350 | } |
| @@ -370,28 +354,18 @@ | ||
| 370 | 354 | } |
| 371 | 355 | if( (zB = P("b"))!=0 ){ |
| 372 | 356 | blob_append_sql(&sql, " AND event.mtime<=julianday('%q')", zB); |
| 373 | 357 | url_add_parameter(&url, "b", zB); |
| 374 | 358 | } |
| 375 | - if( firstChngOnly ){ | |
| 376 | - blob_append_sql(&sql, " GROUP BY mlink.fid"); | |
| 377 | - } | |
| 378 | - blob_append_sql(&sql," ORDER BY event.mtime DESC /*sort*/"); | |
| 359 | + blob_append_sql(&sql, | |
| 360 | + " GROUP BY mlink.fid" | |
| 361 | + " ORDER BY event.mtime DESC /*sort*/" | |
| 362 | + ); | |
| 379 | 363 | if( (n = atoi(PD("n","0")))>0 ){ |
| 380 | 364 | blob_append_sql(&sql, " LIMIT %d", n); |
| 381 | 365 | url_add_parameter(&url, "n", P("n")); |
| 382 | 366 | } |
| 383 | - if( baseCheckin==0 ){ | |
| 384 | - if( firstChngOnly ){ | |
| 385 | - style_submenu_element("Full", "Show all changes","%s", | |
| 386 | - url_render(&url, "fco", "0", 0, 0)); | |
| 387 | - }else{ | |
| 388 | - style_submenu_element("Simplified", | |
| 389 | - "Show only first use of a change","%s", | |
| 390 | - url_render(&url, "fco", 0, 0, 0)); | |
| 391 | - } | |
| 392 | - } | |
| 393 | 367 | db_prepare(&q, "%s", blob_sql_text(&sql)); |
| 394 | 368 | if( P("showsql")!=0 ){ |
| 395 | 369 | @ <p>SQL: %h(blob_str(&sql))</p> |
| 396 | 370 | } |
| 397 | 371 | blob_reset(&sql); |
| 398 | 372 |
| --- src/finfo.c | |
| +++ src/finfo.c | |
| @@ -284,11 +284,10 @@ | |
| 284 | ** b=DATE Only show changes before DATE |
| 285 | ** n=NUM Show the first NUM changes only |
| 286 | ** brbg Background color by branch name |
| 287 | ** ubg Background color by user name |
| 288 | ** ci=UUID Ancestors of a particular check-in |
| 289 | ** fco=BOOL Show only first occurrence of each version if true (default) |
| 290 | */ |
| 291 | void finfo_page(void){ |
| 292 | Stmt q; |
| 293 | const char *zFilename; |
| 294 | char zPrevDate[20]; |
| @@ -302,11 +301,10 @@ | |
| 302 | Blob sql; |
| 303 | HQuery url; |
| 304 | GraphContext *pGraph; |
| 305 | int brBg = P("brbg")!=0; |
| 306 | int uBg = P("ubg")!=0; |
| 307 | int firstChngOnly = atoi(PD("fco","1"))!=0; |
| 308 | int fDebug = atoi(PD("debug","0")); |
| 309 | int fShowId = P("showid")!=0; |
| 310 | |
| 311 | login_check_credentials(); |
| 312 | if( !g.perm.Read ){ login_needed(); return; } |
| @@ -314,13 +312,10 @@ | |
| 314 | login_anonymous_available(); |
| 315 | url_initialize(&url, "finfo"); |
| 316 | if( brBg ) url_add_parameter(&url, "brbg", 0); |
| 317 | if( uBg ) url_add_parameter(&url, "ubg", 0); |
| 318 | baseCheckin = name_to_rid_www("ci"); |
| 319 | if( baseCheckin ) firstChngOnly = 1; |
| 320 | if( !firstChngOnly ) url_add_parameter(&url, "fco", "0"); |
| 321 | |
| 322 | zPrevDate[0] = 0; |
| 323 | zFilename = PD("name",""); |
| 324 | fnid = db_int(0, "SELECT fnid FROM filename WHERE name=%Q", zFilename); |
| 325 | if( fnid==0 ){ |
| 326 | @ No such file: %h(zFilename) |
| @@ -329,11 +324,11 @@ | |
| 329 | } |
| 330 | url_add_parameter(&url, "name", zFilename); |
| 331 | blob_zero(&sql); |
| 332 | blob_append_sql(&sql, |
| 333 | "SELECT" |
| 334 | " datetime(event.mtime%s)," /* Date of change */ |
| 335 | " coalesce(event.ecomment, event.comment)," /* Check-in comment */ |
| 336 | " coalesce(event.euser, event.user)," /* User who made chng */ |
| 337 | " mlink.pid," /* Parent file rid */ |
| 338 | " mlink.fid," /* File rid */ |
| 339 | " (SELECT uuid FROM blob WHERE rid=mlink.pid)," /* Parent file uuid */ |
| @@ -341,26 +336,15 @@ | |
| 341 | " (SELECT uuid FROM blob WHERE rid=mlink.mid)," /* Check-in uuid */ |
| 342 | " event.bgcolor," /* Background color */ |
| 343 | " (SELECT value FROM tagxref WHERE tagid=%d AND tagtype>0" |
| 344 | " AND tagxref.rid=mlink.mid)," /* Branchname */ |
| 345 | " mlink.mid," /* check-in ID */ |
| 346 | " mlink.pfnid", /* Previous filename */ |
| 347 | timeline_utc(), TAG_BRANCH |
| 348 | ); |
| 349 | if( firstChngOnly ){ |
| 350 | blob_append_sql(&sql, |
| 351 | ", min(CASE (SELECT value FROM tagxref" |
| 352 | " WHERE tagtype>0 AND tagid=%d" |
| 353 | " AND tagxref.rid=mlink.mid)" |
| 354 | " WHEN 'trunk' THEN event.mtime-10000 ELSE event.mtime END)", |
| 355 | TAG_BRANCH); |
| 356 | } |
| 357 | blob_append_sql(&sql, |
| 358 | " FROM mlink, event" |
| 359 | " WHERE mlink.fnid=%d" |
| 360 | " AND event.objid=mlink.mid", |
| 361 | fnid |
| 362 | ); |
| 363 | if( baseCheckin ){ |
| 364 | compute_direct_ancestors(baseCheckin, 10000000); |
| 365 | blob_append_sql(&sql," AND mlink.mid IN (SELECT rid FROM ancestor)"); |
| 366 | } |
| @@ -370,28 +354,18 @@ | |
| 370 | } |
| 371 | if( (zB = P("b"))!=0 ){ |
| 372 | blob_append_sql(&sql, " AND event.mtime<=julianday('%q')", zB); |
| 373 | url_add_parameter(&url, "b", zB); |
| 374 | } |
| 375 | if( firstChngOnly ){ |
| 376 | blob_append_sql(&sql, " GROUP BY mlink.fid"); |
| 377 | } |
| 378 | blob_append_sql(&sql," ORDER BY event.mtime DESC /*sort*/"); |
| 379 | if( (n = atoi(PD("n","0")))>0 ){ |
| 380 | blob_append_sql(&sql, " LIMIT %d", n); |
| 381 | url_add_parameter(&url, "n", P("n")); |
| 382 | } |
| 383 | if( baseCheckin==0 ){ |
| 384 | if( firstChngOnly ){ |
| 385 | style_submenu_element("Full", "Show all changes","%s", |
| 386 | url_render(&url, "fco", "0", 0, 0)); |
| 387 | }else{ |
| 388 | style_submenu_element("Simplified", |
| 389 | "Show only first use of a change","%s", |
| 390 | url_render(&url, "fco", 0, 0, 0)); |
| 391 | } |
| 392 | } |
| 393 | db_prepare(&q, "%s", blob_sql_text(&sql)); |
| 394 | if( P("showsql")!=0 ){ |
| 395 | @ <p>SQL: %h(blob_str(&sql))</p> |
| 396 | } |
| 397 | blob_reset(&sql); |
| 398 |
| --- src/finfo.c | |
| +++ src/finfo.c | |
| @@ -284,11 +284,10 @@ | |
| 284 | ** b=DATE Only show changes before DATE |
| 285 | ** n=NUM Show the first NUM changes only |
| 286 | ** brbg Background color by branch name |
| 287 | ** ubg Background color by user name |
| 288 | ** ci=UUID Ancestors of a particular check-in |
| 289 | */ |
| 290 | void finfo_page(void){ |
| 291 | Stmt q; |
| 292 | const char *zFilename; |
| 293 | char zPrevDate[20]; |
| @@ -302,11 +301,10 @@ | |
| 301 | Blob sql; |
| 302 | HQuery url; |
| 303 | GraphContext *pGraph; |
| 304 | int brBg = P("brbg")!=0; |
| 305 | int uBg = P("ubg")!=0; |
| 306 | int fDebug = atoi(PD("debug","0")); |
| 307 | int fShowId = P("showid")!=0; |
| 308 | |
| 309 | login_check_credentials(); |
| 310 | if( !g.perm.Read ){ login_needed(); return; } |
| @@ -314,13 +312,10 @@ | |
| 312 | login_anonymous_available(); |
| 313 | url_initialize(&url, "finfo"); |
| 314 | if( brBg ) url_add_parameter(&url, "brbg", 0); |
| 315 | if( uBg ) url_add_parameter(&url, "ubg", 0); |
| 316 | baseCheckin = name_to_rid_www("ci"); |
| 317 | zPrevDate[0] = 0; |
| 318 | zFilename = PD("name",""); |
| 319 | fnid = db_int(0, "SELECT fnid FROM filename WHERE name=%Q", zFilename); |
| 320 | if( fnid==0 ){ |
| 321 | @ No such file: %h(zFilename) |
| @@ -329,11 +324,11 @@ | |
| 324 | } |
| 325 | url_add_parameter(&url, "name", zFilename); |
| 326 | blob_zero(&sql); |
| 327 | blob_append_sql(&sql, |
| 328 | "SELECT" |
| 329 | " datetime(min(event.mtime)%s)," /* Date of change */ |
| 330 | " coalesce(event.ecomment, event.comment)," /* Check-in comment */ |
| 331 | " coalesce(event.euser, event.user)," /* User who made chng */ |
| 332 | " mlink.pid," /* Parent file rid */ |
| 333 | " mlink.fid," /* File rid */ |
| 334 | " (SELECT uuid FROM blob WHERE rid=mlink.pid)," /* Parent file uuid */ |
| @@ -341,26 +336,15 @@ | |
| 336 | " (SELECT uuid FROM blob WHERE rid=mlink.mid)," /* Check-in uuid */ |
| 337 | " event.bgcolor," /* Background color */ |
| 338 | " (SELECT value FROM tagxref WHERE tagid=%d AND tagtype>0" |
| 339 | " AND tagxref.rid=mlink.mid)," /* Branchname */ |
| 340 | " mlink.mid," /* check-in ID */ |
| 341 | " mlink.pfnid" /* Previous filename */ |
| 342 | " FROM mlink, event" |
| 343 | " WHERE mlink.fnid=%d" |
| 344 | " AND event.objid=mlink.mid", |
| 345 | timeline_utc(), TAG_BRANCH, fnid |
| 346 | ); |
| 347 | if( baseCheckin ){ |
| 348 | compute_direct_ancestors(baseCheckin, 10000000); |
| 349 | blob_append_sql(&sql," AND mlink.mid IN (SELECT rid FROM ancestor)"); |
| 350 | } |
| @@ -370,28 +354,18 @@ | |
| 354 | } |
| 355 | if( (zB = P("b"))!=0 ){ |
| 356 | blob_append_sql(&sql, " AND event.mtime<=julianday('%q')", zB); |
| 357 | url_add_parameter(&url, "b", zB); |
| 358 | } |
| 359 | blob_append_sql(&sql, |
| 360 | " GROUP BY mlink.fid" |
| 361 | " ORDER BY event.mtime DESC /*sort*/" |
| 362 | ); |
| 363 | if( (n = atoi(PD("n","0")))>0 ){ |
| 364 | blob_append_sql(&sql, " LIMIT %d", n); |
| 365 | url_add_parameter(&url, "n", P("n")); |
| 366 | } |
| 367 | db_prepare(&q, "%s", blob_sql_text(&sql)); |
| 368 | if( P("showsql")!=0 ){ |
| 369 | @ <p>SQL: %h(blob_str(&sql))</p> |
| 370 | } |
| 371 | blob_reset(&sql); |
| 372 |