Fossil SCM

Fixes to the "ancestry" links of /fdiff.

drh 2015-01-27 01:20 trunk
Commit d4d6a8432b9bfe4d0ab1afca728ba4818dece611
1 file changed +23 -9
+23 -9
--- src/finfo.c
+++ src/finfo.c
@@ -343,12 +343,22 @@
343343
" WHERE mlink.fnid=%d"
344344
" AND event.objid=mlink.mid",
345345
timeline_utc(), TAG_BRANCH, fnid
346346
);
347347
if( baseCheckin ){
348
- compute_direct_ancestors(baseCheckin, 10000000);
349
- blob_append_sql(&sql," AND mlink.mid IN (SELECT rid FROM ancestor)");
348
+ blob_append_sql(&sql,
349
+ " AND mlink.fid IN ("
350
+ " WITH RECURSIVE x(fid) AS ("
351
+ " SELECT mlink.fid FROM mlink"
352
+ " WHERE mlink.mid=%d AND mlink.fnid=%d"
353
+ " UNION"
354
+ " SELECT mlink.pid FROM mlink, x"
355
+ " WHERE mlink.fid=x.fid AND mlink.pid>0 AND +mlink.fnid=%d"
356
+ " ) SELECT fid FROM x)"
357
+ " AND event.mtime<=(SELECT mtime FROM event WHERE objid=%d)",
358
+ baseCheckin, fnid, fnid, baseCheckin
359
+ );
350360
}
351361
if( (zA = P("a"))!=0 ){
352362
blob_append_sql(&sql, " AND event.mtime>=julianday('%q')", zA);
353363
url_add_parameter(&url, "a", zA);
354364
}
@@ -373,17 +383,19 @@
373383
if( baseCheckin ){
374384
char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", baseCheckin);
375385
char *zLink = href("%R/info/%s", zUuid);
376386
blob_appendf(&title, "Ancestors of file ");
377387
hyperlinked_path(zFilename, &title, zUuid, "tree", "");
388
+ if( fShowId ) blob_appendf(&title, " (%d)", fnid);
378389
blob_appendf(&title, " from check-in %z%S</a>", zLink, zUuid);
390
+ if( fShowId ) blob_appendf(&title, " (%d)", baseCheckin);
379391
fossil_free(zUuid);
380392
}else{
381393
blob_appendf(&title, "History of files named ");
382394
hyperlinked_path(zFilename, &title, 0, "tree", "");
395
+ if( fShowId ) blob_appendf(&title, " (%d)", fnid);
383396
}
384
- if( fShowId ) blob_appendf(&title, " (%d)", fnid);
385397
@ <h2>%b(&title)</h2>
386398
blob_reset(&title);
387399
pGraph = graph_init();
388400
@ <div id="canvas" style="position:relative;width:1px;height:1px;"
389401
@ onclick="clickOnGraph(event)"></div>
@@ -489,23 +501,25 @@
489501
if( fpid ){
490502
@ %z(href("%R/fdiff?sbs=1&v1=%s&v2=%s",zPUuid,zUuid))[diff]</a>
491503
}
492504
}
493505
if( fDebug & FINFO_DEBUG_MLINK ){
494
- int srcid = db_int(0, "SELECT srcid FROM delta WHERE rid=%d", frid);
495
- int sz = db_int(0, "SELECT length(content) FROM blob WHERE rid=%d", frid);
496
- @ <br>fid=%d(frid) pid=%d(fpid) mid=%d(fmid) sz=%d(sz)
497
- if( srcid ){
498
- @ srcid=%d(srcid)
506
+ int ii;
507
+ @ <br>fid=%d(frid) pid=%d(fpid) mid=%d(fmid)
508
+ if( nParent>0 ){
509
+ @ parents=%d(aParent[0])
510
+ for(ii=1; ii<nParent; ii++){
511
+ @ %d(aParent[ii])
512
+ }
499513
}
500514
}
501515
tag_private_status(frid);
502516
@ </td></tr>
503517
}
504518
db_finalize(&q);
505519
if( pGraph ){
506
- graph_finish(pGraph, 0);
520
+ graph_finish(pGraph, 1);
507521
if( pGraph->nErr ){
508522
graph_free(pGraph);
509523
pGraph = 0;
510524
}else{
511525
int w = (pGraph->mxRail+1)*pGraph->iRailPitch + 10;
512526
--- src/finfo.c
+++ src/finfo.c
@@ -343,12 +343,22 @@
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 }
351 if( (zA = P("a"))!=0 ){
352 blob_append_sql(&sql, " AND event.mtime>=julianday('%q')", zA);
353 url_add_parameter(&url, "a", zA);
354 }
@@ -373,17 +383,19 @@
373 if( baseCheckin ){
374 char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", baseCheckin);
375 char *zLink = href("%R/info/%s", zUuid);
376 blob_appendf(&title, "Ancestors of file ");
377 hyperlinked_path(zFilename, &title, zUuid, "tree", "");
 
378 blob_appendf(&title, " from check-in %z%S</a>", zLink, zUuid);
 
379 fossil_free(zUuid);
380 }else{
381 blob_appendf(&title, "History of files named ");
382 hyperlinked_path(zFilename, &title, 0, "tree", "");
 
383 }
384 if( fShowId ) blob_appendf(&title, " (%d)", fnid);
385 @ <h2>%b(&title)</h2>
386 blob_reset(&title);
387 pGraph = graph_init();
388 @ <div id="canvas" style="position:relative;width:1px;height:1px;"
389 @ onclick="clickOnGraph(event)"></div>
@@ -489,23 +501,25 @@
489 if( fpid ){
490 @ %z(href("%R/fdiff?sbs=1&v1=%s&v2=%s",zPUuid,zUuid))[diff]</a>
491 }
492 }
493 if( fDebug & FINFO_DEBUG_MLINK ){
494 int srcid = db_int(0, "SELECT srcid FROM delta WHERE rid=%d", frid);
495 int sz = db_int(0, "SELECT length(content) FROM blob WHERE rid=%d", frid);
496 @ <br>fid=%d(frid) pid=%d(fpid) mid=%d(fmid) sz=%d(sz)
497 if( srcid ){
498 @ srcid=%d(srcid)
 
 
499 }
500 }
501 tag_private_status(frid);
502 @ </td></tr>
503 }
504 db_finalize(&q);
505 if( pGraph ){
506 graph_finish(pGraph, 0);
507 if( pGraph->nErr ){
508 graph_free(pGraph);
509 pGraph = 0;
510 }else{
511 int w = (pGraph->mxRail+1)*pGraph->iRailPitch + 10;
512
--- src/finfo.c
+++ src/finfo.c
@@ -343,12 +343,22 @@
343 " WHERE mlink.fnid=%d"
344 " AND event.objid=mlink.mid",
345 timeline_utc(), TAG_BRANCH, fnid
346 );
347 if( baseCheckin ){
348 blob_append_sql(&sql,
349 " AND mlink.fid IN ("
350 " WITH RECURSIVE x(fid) AS ("
351 " SELECT mlink.fid FROM mlink"
352 " WHERE mlink.mid=%d AND mlink.fnid=%d"
353 " UNION"
354 " SELECT mlink.pid FROM mlink, x"
355 " WHERE mlink.fid=x.fid AND mlink.pid>0 AND +mlink.fnid=%d"
356 " ) SELECT fid FROM x)"
357 " AND event.mtime<=(SELECT mtime FROM event WHERE objid=%d)",
358 baseCheckin, fnid, fnid, baseCheckin
359 );
360 }
361 if( (zA = P("a"))!=0 ){
362 blob_append_sql(&sql, " AND event.mtime>=julianday('%q')", zA);
363 url_add_parameter(&url, "a", zA);
364 }
@@ -373,17 +383,19 @@
383 if( baseCheckin ){
384 char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", baseCheckin);
385 char *zLink = href("%R/info/%s", zUuid);
386 blob_appendf(&title, "Ancestors of file ");
387 hyperlinked_path(zFilename, &title, zUuid, "tree", "");
388 if( fShowId ) blob_appendf(&title, " (%d)", fnid);
389 blob_appendf(&title, " from check-in %z%S</a>", zLink, zUuid);
390 if( fShowId ) blob_appendf(&title, " (%d)", baseCheckin);
391 fossil_free(zUuid);
392 }else{
393 blob_appendf(&title, "History of files named ");
394 hyperlinked_path(zFilename, &title, 0, "tree", "");
395 if( fShowId ) blob_appendf(&title, " (%d)", fnid);
396 }
 
397 @ <h2>%b(&title)</h2>
398 blob_reset(&title);
399 pGraph = graph_init();
400 @ <div id="canvas" style="position:relative;width:1px;height:1px;"
401 @ onclick="clickOnGraph(event)"></div>
@@ -489,23 +501,25 @@
501 if( fpid ){
502 @ %z(href("%R/fdiff?sbs=1&v1=%s&v2=%s",zPUuid,zUuid))[diff]</a>
503 }
504 }
505 if( fDebug & FINFO_DEBUG_MLINK ){
506 int ii;
507 @ <br>fid=%d(frid) pid=%d(fpid) mid=%d(fmid)
508 if( nParent>0 ){
509 @ parents=%d(aParent[0])
510 for(ii=1; ii<nParent; ii++){
511 @ %d(aParent[ii])
512 }
513 }
514 }
515 tag_private_status(frid);
516 @ </td></tr>
517 }
518 db_finalize(&q);
519 if( pGraph ){
520 graph_finish(pGraph, 1);
521 if( pGraph->nErr ){
522 graph_free(pGraph);
523 pGraph = 0;
524 }else{
525 int w = (pGraph->mxRail+1)*pGraph->iRailPitch + 10;
526

Keyboard Shortcuts

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