Fossil SCM

On the /finfo page, change the check-in range query parameters from ci= and orig= into from= and to=. This gets the ci= query parameter out of the way so that it can be reused.

drh 2020-10-17 12:34 trunk
Commit 299800b29d85e71e177be140af568419cbfa19287a54cadc414611e8a6392a52
2 files changed +5 -5 +29 -28
+5 -5
--- src/diff.c
+++ src/diff.c
@@ -2483,13 +2483,13 @@
24832483
ann.aVers[i].zBgColor = mprintf("#%06x", clr);
24842484
}
24852485
24862486
@ <div id="annotation_log" style='display:%s(showLog?"block":"none");'>
24872487
if( zOrigin ){
2488
- zLink = href("%R/finfo?name=%t&ci=%!S&orig=%!S",zFilename,zCI,zOrigin);
2488
+ zLink = href("%R/finfo?name=%t&from=%!S&to=%!S",zFilename,zCI,zOrigin);
24892489
}else{
2490
- zLink = href("%R/finfo?name=%t&ci=%!S",zFilename,zCI);
2490
+ zLink = href("%R/finfo?name=%t&from=%!S",zFilename,zCI);
24912491
}
24922492
@ <h2>Versions of %z(zLink)%h(zFilename)</a> analyzed:</h2>
24932493
@ <ol>
24942494
for(p=ann.aVers, i=0; i<ann.nVers; i++, p++){
24952495
@ <li><span style='background-color:%s(p->zBgColor);'>%s(p->zDate)
@@ -2502,21 +2502,21 @@
25022502
@ </div>
25032503
25042504
if( !ann.bMoreToDo ){
25052505
assert( ann.origId==0 ); /* bMoreToDo always set for a point-to-point */
25062506
@ <h2>Origin for each line in
2507
- @ %z(href("%R/finfo?name=%h&ci=%!S", zFilename, zCI))%h(zFilename)</a>
2507
+ @ %z(href("%R/finfo?name=%h&from=%!S", zFilename, zCI))%h(zFilename)</a>
25082508
@ from check-in %z(href("%R/info/%!S",zCI))%S(zCI)</a>:</h2>
25092509
}else if( ann.origId>0 ){
25102510
@ <h2>Lines of
2511
- @ %z(href("%R/finfo?name=%h&ci=%!S", zFilename, zCI))%h(zFilename)</a>
2511
+ @ %z(href("%R/finfo?name=%h&from=%!S", zFilename, zCI))%h(zFilename)</a>
25122512
@ from check-in %z(href("%R/info/%!S",zCI))%S(zCI)</a>
25132513
@ that are changed by the sequence of edits moving toward
25142514
@ check-in %z(href("%R/info/%!S",zOrigin))%S(zOrigin)</a>:</h2>
25152515
}else{
25162516
@ <h2>Lines added by the %d(ann.nVers) most recent ancestors of
2517
- @ %z(href("%R/finfo?name=%h&ci=%!S", zFilename, zCI))%h(zFilename)</a>
2517
+ @ %z(href("%R/finfo?name=%h&from=%!S", zFilename, zCI))%h(zFilename)</a>
25182518
@ from check-in %z(href("%R/info/%!S",zCI))%S(zCI)</a>:</h2>
25192519
}
25202520
@ <pre>
25212521
szHash = 10;
25222522
for(i=0; i<ann.nOrig; i++){
25232523
--- src/diff.c
+++ src/diff.c
@@ -2483,13 +2483,13 @@
2483 ann.aVers[i].zBgColor = mprintf("#%06x", clr);
2484 }
2485
2486 @ <div id="annotation_log" style='display:%s(showLog?"block":"none");'>
2487 if( zOrigin ){
2488 zLink = href("%R/finfo?name=%t&ci=%!S&orig=%!S",zFilename,zCI,zOrigin);
2489 }else{
2490 zLink = href("%R/finfo?name=%t&ci=%!S",zFilename,zCI);
2491 }
2492 @ <h2>Versions of %z(zLink)%h(zFilename)</a> analyzed:</h2>
2493 @ <ol>
2494 for(p=ann.aVers, i=0; i<ann.nVers; i++, p++){
2495 @ <li><span style='background-color:%s(p->zBgColor);'>%s(p->zDate)
@@ -2502,21 +2502,21 @@
2502 @ </div>
2503
2504 if( !ann.bMoreToDo ){
2505 assert( ann.origId==0 ); /* bMoreToDo always set for a point-to-point */
2506 @ <h2>Origin for each line in
2507 @ %z(href("%R/finfo?name=%h&ci=%!S", zFilename, zCI))%h(zFilename)</a>
2508 @ from check-in %z(href("%R/info/%!S",zCI))%S(zCI)</a>:</h2>
2509 }else if( ann.origId>0 ){
2510 @ <h2>Lines of
2511 @ %z(href("%R/finfo?name=%h&ci=%!S", zFilename, zCI))%h(zFilename)</a>
2512 @ from check-in %z(href("%R/info/%!S",zCI))%S(zCI)</a>
2513 @ that are changed by the sequence of edits moving toward
2514 @ check-in %z(href("%R/info/%!S",zOrigin))%S(zOrigin)</a>:</h2>
2515 }else{
2516 @ <h2>Lines added by the %d(ann.nVers) most recent ancestors of
2517 @ %z(href("%R/finfo?name=%h&ci=%!S", zFilename, zCI))%h(zFilename)</a>
2518 @ from check-in %z(href("%R/info/%!S",zCI))%S(zCI)</a>:</h2>
2519 }
2520 @ <pre>
2521 szHash = 10;
2522 for(i=0; i<ann.nOrig; i++){
2523
--- src/diff.c
+++ src/diff.c
@@ -2483,13 +2483,13 @@
2483 ann.aVers[i].zBgColor = mprintf("#%06x", clr);
2484 }
2485
2486 @ <div id="annotation_log" style='display:%s(showLog?"block":"none");'>
2487 if( zOrigin ){
2488 zLink = href("%R/finfo?name=%t&from=%!S&to=%!S",zFilename,zCI,zOrigin);
2489 }else{
2490 zLink = href("%R/finfo?name=%t&from=%!S",zFilename,zCI);
2491 }
2492 @ <h2>Versions of %z(zLink)%h(zFilename)</a> analyzed:</h2>
2493 @ <ol>
2494 for(p=ann.aVers, i=0; i<ann.nVers; i++, p++){
2495 @ <li><span style='background-color:%s(p->zBgColor);'>%s(p->zDate)
@@ -2502,21 +2502,21 @@
2502 @ </div>
2503
2504 if( !ann.bMoreToDo ){
2505 assert( ann.origId==0 ); /* bMoreToDo always set for a point-to-point */
2506 @ <h2>Origin for each line in
2507 @ %z(href("%R/finfo?name=%h&from=%!S", zFilename, zCI))%h(zFilename)</a>
2508 @ from check-in %z(href("%R/info/%!S",zCI))%S(zCI)</a>:</h2>
2509 }else if( ann.origId>0 ){
2510 @ <h2>Lines of
2511 @ %z(href("%R/finfo?name=%h&from=%!S", zFilename, zCI))%h(zFilename)</a>
2512 @ from check-in %z(href("%R/info/%!S",zCI))%S(zCI)</a>
2513 @ that are changed by the sequence of edits moving toward
2514 @ check-in %z(href("%R/info/%!S",zOrigin))%S(zOrigin)</a>:</h2>
2515 }else{
2516 @ <h2>Lines added by the %d(ann.nVers) most recent ancestors of
2517 @ %z(href("%R/finfo?name=%h&from=%!S", zFilename, zCI))%h(zFilename)</a>
2518 @ from check-in %z(href("%R/info/%!S",zCI))%S(zCI)</a>:</h2>
2519 }
2520 @ <pre>
2521 szHash = 10;
2522 for(i=0; i<ann.nOrig; i++){
2523
+29 -28
--- src/finfo.c
+++ src/finfo.c
@@ -277,20 +277,21 @@
277277
**
278278
** Show the change history for a single file.
279279
**
280280
** Additional query parameters:
281281
**
282
-** a=DATETIME Only show changes after DATETIME
283
-** b=DATETIME Only show changes before DATETIME
284
-** m=HASH Mark this particular file version
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=HASH Ancestors of a particular check-in
289
-** orig=HASH If both ci and orig are supplied, only show those
290
-** changes on a direct path from orig to ci.
291
-** showid Show RID values for debugging
282
+** a=DATETIME Only show changes after DATETIME
283
+** b=DATETIME Only show changes before DATETIME
284
+** m=HASH Mark this particular file version
285
+** n=NUM Show the first NUM changes only
286
+** name=FILENAME (Required) name of file whose history to show
287
+** brbg Background color by branch name
288
+** ubg Background color by user name
289
+** from=HASH Ancestors of a particular check-in
290
+** to=HASH If both from= and to= are supplied, only show those
291
+** changes on the direct path between them.
292
+** showid Show RID values for debugging
292293
**
293294
** DATETIME may be in any of usual formats, including "now",
294295
** "YYYY-MM-DDTHH:MM:SS.SSS", "YYYYMMDDHHMM", and others.
295296
*/
296297
void finfo_page(void){
@@ -298,12 +299,12 @@
298299
const char *zFilename = PD("name","");
299300
char zPrevDate[20];
300301
const char *zA;
301302
const char *zB;
302303
int n;
303
- int baseCheckin;
304
- int origCheckin = 0;
304
+ int ridFrom;
305
+ int ridTo = 0;
305306
int fnid;
306307
Blob title;
307308
Blob sql;
308309
HQuery url;
309310
GraphContext *pGraph;
@@ -340,11 +341,11 @@
340341
zStyle = "Modern";
341342
}
342343
url_initialize(&url, "finfo");
343344
if( brBg ) url_add_parameter(&url, "brbg", 0);
344345
if( uBg ) url_add_parameter(&url, "ubg", 0);
345
- baseCheckin = name_to_rid_www("ci");
346
+ ridFrom = name_to_rid_www("from");
346347
zPrevDate[0] = 0;
347348
cookie_render();
348349
if( fnid==0 ){
349350
@ No such file: %h(zFilename)
350351
style_footer();
@@ -351,16 +352,16 @@
351352
return;
352353
}
353354
if( g.perm.Admin ){
354355
style_submenu_element("MLink Table", "%R/mlink?name=%t", zFilename);
355356
}
356
- if( baseCheckin ){
357
- if( P("orig")!=0 ){
358
- origCheckin = name_to_typed_rid(P("orig"),"ci");
359
- path_shortest_stored_in_ancestor_table(origCheckin, baseCheckin);
357
+ if( ridFrom ){
358
+ if( P("to")!=0 ){
359
+ ridTo = name_to_typed_rid(P("to"),"ci");
360
+ path_shortest_stored_in_ancestor_table(ridFrom,ridTo);
360361
}else{
361
- compute_direct_ancestors(baseCheckin);
362
+ compute_direct_ancestors(ridFrom);
362363
}
363364
}
364365
url_add_parameter(&url, "name", zFilename);
365366
blob_zero(&sql);
366367
blob_append_sql(&sql,
@@ -393,11 +394,11 @@
393394
if( (zB = P("b"))!=0 ){
394395
blob_append_sql(&sql, " AND event.mtime<=%.16g",
395396
symbolic_name_to_mtime(zB,0));
396397
url_add_parameter(&url, "b", zB);
397398
}
398
- if( baseCheckin ){
399
+ if( ridFrom ){
399400
blob_append_sql(&sql,
400401
" AND mlink.mid IN (SELECT rid FROM ancestor)"
401402
" GROUP BY mlink.fid"
402403
);
403404
}else{
@@ -427,14 +428,14 @@
427428
if( zMark ){
428429
selRid = symbolic_name_to_rid(zMark, "*");
429430
}
430431
blob_reset(&sql);
431432
blob_zero(&title);
432
- if( baseCheckin ){
433
- char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", baseCheckin);
433
+ if( ridFrom ){
434
+ char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", ridFrom);
434435
char *zLink = href("%R/info/%!S", zUuid);
435
- if( origCheckin ){
436
+ if( ridTo ){
436437
blob_appendf(&title, "Changes to file ");
437438
}else if( n>0 ){
438439
blob_appendf(&title, "First %d ancestors of file ", n);
439440
}else{
440441
blob_appendf(&title, "Ancestors of file ");
@@ -441,16 +442,16 @@
441442
}
442443
blob_appendf(&title,"%z%h</a>",
443444
href("%R/file?name=%T&ci=%!S", zFilename, zUuid),
444445
zFilename);
445446
if( fShowId ) blob_appendf(&title, " (%d)", fnid);
446
- blob_append(&title, origCheckin ? " between " : " from ", -1);
447
+ blob_append(&title, ridTo ? " between " : " from ", -1);
447448
blob_appendf(&title, "check-in %z%S</a>", zLink, zUuid);
448
- if( fShowId ) blob_appendf(&title, " (%d)", baseCheckin);
449
+ if( fShowId ) blob_appendf(&title, " (%d)", ridFrom);
449450
fossil_free(zUuid);
450
- if( origCheckin ){
451
- zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", origCheckin);
451
+ if( ridTo ){
452
+ zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", ridTo);
452453
zLink = href("%R/info/%!S", zUuid);
453454
blob_appendf(&title, " and check-in %z%S</a>", zLink, zUuid);
454455
fossil_free(zUuid);
455456
}
456457
}else{
@@ -463,11 +464,11 @@
463464
}
464465
@ <h2>%b(&title)</h2>
465466
blob_reset(&title);
466467
pGraph = graph_init();
467468
@ <table id="timelineTable%d(iTableId)" class="timelineTable">
468
- if( baseCheckin ){
469
+ if( ridFrom ){
469470
db_prepare(&qparent,
470471
"SELECT DISTINCT pid FROM mlink"
471472
" WHERE fid=:fid AND mid=:mid AND pid>0 AND fnid=:fnid"
472473
" AND pmid IN (SELECT rid FROM ancestor)"
473474
" ORDER BY isaux /*sort*/"
@@ -587,11 +588,11 @@
587588
if( tmFlags & (TIMELINE_COMPACT|TIMELINE_VERBOSE) ){
588589
@ size:&nbsp;%d(szFile))
589590
}else{
590591
@ size:&nbsp;%d(szFile)
591592
}
592
- if( zUuid && origCheckin==0 ){
593
+ if( zUuid && ridTo==0 ){
593594
if( nParent==0 ){
594595
@ <b>Added</b>
595596
}else if( pfnid ){
596597
char *zPrevName = db_text(0,"SELECT name FROM filename WHERE fnid=%d",
597598
pfnid);
598599
--- src/finfo.c
+++ src/finfo.c
@@ -277,20 +277,21 @@
277 **
278 ** Show the change history for a single file.
279 **
280 ** Additional query parameters:
281 **
282 ** a=DATETIME Only show changes after DATETIME
283 ** b=DATETIME Only show changes before DATETIME
284 ** m=HASH Mark this particular file version
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=HASH Ancestors of a particular check-in
289 ** orig=HASH If both ci and orig are supplied, only show those
290 ** changes on a direct path from orig to ci.
291 ** showid Show RID values for debugging
 
292 **
293 ** DATETIME may be in any of usual formats, including "now",
294 ** "YYYY-MM-DDTHH:MM:SS.SSS", "YYYYMMDDHHMM", and others.
295 */
296 void finfo_page(void){
@@ -298,12 +299,12 @@
298 const char *zFilename = PD("name","");
299 char zPrevDate[20];
300 const char *zA;
301 const char *zB;
302 int n;
303 int baseCheckin;
304 int origCheckin = 0;
305 int fnid;
306 Blob title;
307 Blob sql;
308 HQuery url;
309 GraphContext *pGraph;
@@ -340,11 +341,11 @@
340 zStyle = "Modern";
341 }
342 url_initialize(&url, "finfo");
343 if( brBg ) url_add_parameter(&url, "brbg", 0);
344 if( uBg ) url_add_parameter(&url, "ubg", 0);
345 baseCheckin = name_to_rid_www("ci");
346 zPrevDate[0] = 0;
347 cookie_render();
348 if( fnid==0 ){
349 @ No such file: %h(zFilename)
350 style_footer();
@@ -351,16 +352,16 @@
351 return;
352 }
353 if( g.perm.Admin ){
354 style_submenu_element("MLink Table", "%R/mlink?name=%t", zFilename);
355 }
356 if( baseCheckin ){
357 if( P("orig")!=0 ){
358 origCheckin = name_to_typed_rid(P("orig"),"ci");
359 path_shortest_stored_in_ancestor_table(origCheckin, baseCheckin);
360 }else{
361 compute_direct_ancestors(baseCheckin);
362 }
363 }
364 url_add_parameter(&url, "name", zFilename);
365 blob_zero(&sql);
366 blob_append_sql(&sql,
@@ -393,11 +394,11 @@
393 if( (zB = P("b"))!=0 ){
394 blob_append_sql(&sql, " AND event.mtime<=%.16g",
395 symbolic_name_to_mtime(zB,0));
396 url_add_parameter(&url, "b", zB);
397 }
398 if( baseCheckin ){
399 blob_append_sql(&sql,
400 " AND mlink.mid IN (SELECT rid FROM ancestor)"
401 " GROUP BY mlink.fid"
402 );
403 }else{
@@ -427,14 +428,14 @@
427 if( zMark ){
428 selRid = symbolic_name_to_rid(zMark, "*");
429 }
430 blob_reset(&sql);
431 blob_zero(&title);
432 if( baseCheckin ){
433 char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", baseCheckin);
434 char *zLink = href("%R/info/%!S", zUuid);
435 if( origCheckin ){
436 blob_appendf(&title, "Changes to file ");
437 }else if( n>0 ){
438 blob_appendf(&title, "First %d ancestors of file ", n);
439 }else{
440 blob_appendf(&title, "Ancestors of file ");
@@ -441,16 +442,16 @@
441 }
442 blob_appendf(&title,"%z%h</a>",
443 href("%R/file?name=%T&ci=%!S", zFilename, zUuid),
444 zFilename);
445 if( fShowId ) blob_appendf(&title, " (%d)", fnid);
446 blob_append(&title, origCheckin ? " between " : " from ", -1);
447 blob_appendf(&title, "check-in %z%S</a>", zLink, zUuid);
448 if( fShowId ) blob_appendf(&title, " (%d)", baseCheckin);
449 fossil_free(zUuid);
450 if( origCheckin ){
451 zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", origCheckin);
452 zLink = href("%R/info/%!S", zUuid);
453 blob_appendf(&title, " and check-in %z%S</a>", zLink, zUuid);
454 fossil_free(zUuid);
455 }
456 }else{
@@ -463,11 +464,11 @@
463 }
464 @ <h2>%b(&title)</h2>
465 blob_reset(&title);
466 pGraph = graph_init();
467 @ <table id="timelineTable%d(iTableId)" class="timelineTable">
468 if( baseCheckin ){
469 db_prepare(&qparent,
470 "SELECT DISTINCT pid FROM mlink"
471 " WHERE fid=:fid AND mid=:mid AND pid>0 AND fnid=:fnid"
472 " AND pmid IN (SELECT rid FROM ancestor)"
473 " ORDER BY isaux /*sort*/"
@@ -587,11 +588,11 @@
587 if( tmFlags & (TIMELINE_COMPACT|TIMELINE_VERBOSE) ){
588 @ size:&nbsp;%d(szFile))
589 }else{
590 @ size:&nbsp;%d(szFile)
591 }
592 if( zUuid && origCheckin==0 ){
593 if( nParent==0 ){
594 @ <b>Added</b>
595 }else if( pfnid ){
596 char *zPrevName = db_text(0,"SELECT name FROM filename WHERE fnid=%d",
597 pfnid);
598
--- src/finfo.c
+++ src/finfo.c
@@ -277,20 +277,21 @@
277 **
278 ** Show the change history for a single file.
279 **
280 ** Additional query parameters:
281 **
282 ** a=DATETIME Only show changes after DATETIME
283 ** b=DATETIME Only show changes before DATETIME
284 ** m=HASH Mark this particular file version
285 ** n=NUM Show the first NUM changes only
286 ** name=FILENAME (Required) name of file whose history to show
287 ** brbg Background color by branch name
288 ** ubg Background color by user name
289 ** from=HASH Ancestors of a particular check-in
290 ** to=HASH If both from= and to= are supplied, only show those
291 ** changes on the direct path between them.
292 ** showid Show RID values for debugging
293 **
294 ** DATETIME may be in any of usual formats, including "now",
295 ** "YYYY-MM-DDTHH:MM:SS.SSS", "YYYYMMDDHHMM", and others.
296 */
297 void finfo_page(void){
@@ -298,12 +299,12 @@
299 const char *zFilename = PD("name","");
300 char zPrevDate[20];
301 const char *zA;
302 const char *zB;
303 int n;
304 int ridFrom;
305 int ridTo = 0;
306 int fnid;
307 Blob title;
308 Blob sql;
309 HQuery url;
310 GraphContext *pGraph;
@@ -340,11 +341,11 @@
341 zStyle = "Modern";
342 }
343 url_initialize(&url, "finfo");
344 if( brBg ) url_add_parameter(&url, "brbg", 0);
345 if( uBg ) url_add_parameter(&url, "ubg", 0);
346 ridFrom = name_to_rid_www("from");
347 zPrevDate[0] = 0;
348 cookie_render();
349 if( fnid==0 ){
350 @ No such file: %h(zFilename)
351 style_footer();
@@ -351,16 +352,16 @@
352 return;
353 }
354 if( g.perm.Admin ){
355 style_submenu_element("MLink Table", "%R/mlink?name=%t", zFilename);
356 }
357 if( ridFrom ){
358 if( P("to")!=0 ){
359 ridTo = name_to_typed_rid(P("to"),"ci");
360 path_shortest_stored_in_ancestor_table(ridFrom,ridTo);
361 }else{
362 compute_direct_ancestors(ridFrom);
363 }
364 }
365 url_add_parameter(&url, "name", zFilename);
366 blob_zero(&sql);
367 blob_append_sql(&sql,
@@ -393,11 +394,11 @@
394 if( (zB = P("b"))!=0 ){
395 blob_append_sql(&sql, " AND event.mtime<=%.16g",
396 symbolic_name_to_mtime(zB,0));
397 url_add_parameter(&url, "b", zB);
398 }
399 if( ridFrom ){
400 blob_append_sql(&sql,
401 " AND mlink.mid IN (SELECT rid FROM ancestor)"
402 " GROUP BY mlink.fid"
403 );
404 }else{
@@ -427,14 +428,14 @@
428 if( zMark ){
429 selRid = symbolic_name_to_rid(zMark, "*");
430 }
431 blob_reset(&sql);
432 blob_zero(&title);
433 if( ridFrom ){
434 char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", ridFrom);
435 char *zLink = href("%R/info/%!S", zUuid);
436 if( ridTo ){
437 blob_appendf(&title, "Changes to file ");
438 }else if( n>0 ){
439 blob_appendf(&title, "First %d ancestors of file ", n);
440 }else{
441 blob_appendf(&title, "Ancestors of file ");
@@ -441,16 +442,16 @@
442 }
443 blob_appendf(&title,"%z%h</a>",
444 href("%R/file?name=%T&ci=%!S", zFilename, zUuid),
445 zFilename);
446 if( fShowId ) blob_appendf(&title, " (%d)", fnid);
447 blob_append(&title, ridTo ? " between " : " from ", -1);
448 blob_appendf(&title, "check-in %z%S</a>", zLink, zUuid);
449 if( fShowId ) blob_appendf(&title, " (%d)", ridFrom);
450 fossil_free(zUuid);
451 if( ridTo ){
452 zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", ridTo);
453 zLink = href("%R/info/%!S", zUuid);
454 blob_appendf(&title, " and check-in %z%S</a>", zLink, zUuid);
455 fossil_free(zUuid);
456 }
457 }else{
@@ -463,11 +464,11 @@
464 }
465 @ <h2>%b(&title)</h2>
466 blob_reset(&title);
467 pGraph = graph_init();
468 @ <table id="timelineTable%d(iTableId)" class="timelineTable">
469 if( ridFrom ){
470 db_prepare(&qparent,
471 "SELECT DISTINCT pid FROM mlink"
472 " WHERE fid=:fid AND mid=:mid AND pid>0 AND fnid=:fnid"
473 " AND pmid IN (SELECT rid FROM ancestor)"
474 " ORDER BY isaux /*sort*/"
@@ -587,11 +588,11 @@
588 if( tmFlags & (TIMELINE_COMPACT|TIMELINE_VERBOSE) ){
589 @ size:&nbsp;%d(szFile))
590 }else{
591 @ size:&nbsp;%d(szFile)
592 }
593 if( zUuid && ridTo==0 ){
594 if( nParent==0 ){
595 @ <b>Added</b>
596 }else if( pfnid ){
597 char *zPrevName = db_text(0,"SELECT name FROM filename WHERE fnid=%d",
598 pfnid);
599

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button