341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
|
" mlink.pfnid" /* Previous filename */
" FROM mlink, event"
" WHERE mlink.fnid=%d"
" AND event.objid=mlink.mid",
timeline_utc(), TAG_BRANCH, fnid
);
if( baseCheckin ){
compute_direct_ancestors(baseCheckin, 10000000);
blob_append_sql(&sql," AND mlink.mid IN (SELECT rid FROM ancestor)");
}
if( (zA = P("a"))!=0 ){
blob_append_sql(&sql, " AND event.mtime>=julianday('%q')", zA);
url_add_parameter(&url, "a", zA);
}
if( (zB = P("b"))!=0 ){
blob_append_sql(&sql, " AND event.mtime<=julianday('%q')", zB);
|
<
|
>
>
>
>
>
>
>
>
>
>
>
|
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
|
" mlink.pfnid" /* Previous filename */
" FROM mlink, event"
" WHERE mlink.fnid=%d"
" AND event.objid=mlink.mid",
timeline_utc(), TAG_BRANCH, fnid
);
if( baseCheckin ){
blob_append_sql(&sql,
" AND mlink.fid IN ("
" WITH RECURSIVE x(fid) AS ("
" SELECT mlink.fid FROM mlink"
" WHERE mlink.mid=%d AND mlink.fnid=%d"
" UNION"
" SELECT mlink.pid FROM mlink, x"
" WHERE mlink.fid=x.fid AND mlink.pid>0 AND +mlink.fnid=%d"
" ) SELECT fid FROM x)"
" AND event.mtime<=(SELECT mtime FROM event WHERE objid=%d)",
baseCheckin, fnid, fnid, baseCheckin
);
}
if( (zA = P("a"))!=0 ){
blob_append_sql(&sql, " AND event.mtime>=julianday('%q')", zA);
url_add_parameter(&url, "a", zA);
}
if( (zB = P("b"))!=0 ){
blob_append_sql(&sql, " AND event.mtime<=julianday('%q')", zB);
|
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
|
blob_reset(&sql);
blob_zero(&title);
if( baseCheckin ){
char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", baseCheckin);
char *zLink = href("%R/info/%s", zUuid);
blob_appendf(&title, "Ancestors of file ");
hyperlinked_path(zFilename, &title, zUuid, "tree", "");
blob_appendf(&title, " from check-in %z%S</a>", zLink, zUuid);
fossil_free(zUuid);
}else{
blob_appendf(&title, "History of files named ");
hyperlinked_path(zFilename, &title, 0, "tree", "");
}
if( fShowId ) blob_appendf(&title, " (%d)", fnid);
@ <h2>%b(&title)</h2>
blob_reset(&title);
pGraph = graph_init();
@ <div id="canvas" style="position:relative;width:1px;height:1px;"
@ onclick="clickOnGraph(event)"></div>
@ <table id="timelineTable" class="timelineTable">
while( db_step(&q)==SQLITE_ROW ){
|
>
>
<
|
>
|
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
|
blob_reset(&sql);
blob_zero(&title);
if( baseCheckin ){
char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", baseCheckin);
char *zLink = href("%R/info/%s", zUuid);
blob_appendf(&title, "Ancestors of file ");
hyperlinked_path(zFilename, &title, zUuid, "tree", "");
if( fShowId ) blob_appendf(&title, " (%d)", fnid);
blob_appendf(&title, " from check-in %z%S</a>", zLink, zUuid);
if( fShowId ) blob_appendf(&title, " (%d)", baseCheckin);
fossil_free(zUuid);
}else{
blob_appendf(&title, "History of files named ");
hyperlinked_path(zFilename, &title, 0, "tree", "");
if( fShowId ) blob_appendf(&title, " (%d)", fnid);
}
@ <h2>%b(&title)</h2>
blob_reset(&title);
pGraph = graph_init();
@ <div id="canvas" style="position:relative;width:1px;height:1px;"
@ onclick="clickOnGraph(event)"></div>
@ <table id="timelineTable" class="timelineTable">
while( db_step(&q)==SQLITE_ROW ){
|
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
|
@ [blame]</a>
@ %z(href("%R/timeline?n=200&uf=%s",zUuid))[checkins using]</a>
if( fpid ){
@ %z(href("%R/fdiff?sbs=1&v1=%s&v2=%s",zPUuid,zUuid))[diff]</a>
}
}
if( fDebug & FINFO_DEBUG_MLINK ){
int srcid = db_int(0, "SELECT srcid FROM delta WHERE rid=%d", frid);
int sz = db_int(0, "SELECT length(content) FROM blob WHERE rid=%d", frid);
@ <br>fid=%d(frid) pid=%d(fpid) mid=%d(fmid) sz=%d(sz)
if( srcid ){
@ srcid=%d(srcid)
}
}
tag_private_status(frid);
@ </td></tr>
}
db_finalize(&q);
if( pGraph ){
graph_finish(pGraph, 0);
if( pGraph->nErr ){
graph_free(pGraph);
pGraph = 0;
}else{
int w = (pGraph->mxRail+1)*pGraph->iRailPitch + 10;
@ <tr><td></td><td>
@ <div id="grbtm" style="width:%d(w)px;"></div>
|
|
<
|
|
|
>
>
>
|
|
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
|
@ [blame]</a>
@ %z(href("%R/timeline?n=200&uf=%s",zUuid))[checkins using]</a>
if( fpid ){
@ %z(href("%R/fdiff?sbs=1&v1=%s&v2=%s",zPUuid,zUuid))[diff]</a>
}
}
if( fDebug & FINFO_DEBUG_MLINK ){
int ii;
@ <br>fid=%d(frid) pid=%d(fpid) mid=%d(fmid)
if( nParent>0 ){
@ parents=%d(aParent[0])
for(ii=1; ii<nParent; ii++){
@ %d(aParent[ii])
}
}
}
tag_private_status(frid);
@ </td></tr>
}
db_finalize(&q);
if( pGraph ){
graph_finish(pGraph, 1);
if( pGraph->nErr ){
graph_free(pGraph);
pGraph = 0;
}else{
int w = (pGraph->mxRail+1)*pGraph->iRailPitch + 10;
@ <tr><td></td><td>
@ <div id="grbtm" style="width:%d(w)px;"></div>
|