Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Improvements to the the /finfo ancestry calculation. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
116921fd86659636a379315dfa30ff7e |
| User & Date: | drh 2015-01-27 02:08:35.219 |
Context
|
2015-01-27
| ||
| 02:20 | The MLINK.ISAUX field was being set incorrectly by all versions since the cutover to the new MLINK schema in check-in [65aa10f97c]. Run "fossil rebuild" again after upgrading to this version. check-in: a27fa3d46b user: drh tags: trunk | |
| 02:08 | Improvements to the the /finfo ancestry calculation. check-in: 116921fd86 user: drh tags: trunk | |
| 01:39 | Fix a NULL-pointer dereference bug in the graph generator. check-in: 03250bc649 user: drh tags: trunk | |
Changes
Changes to src/finfo.c.
| ︙ | ︙ | |||
292 293 294 295 296 297 298 | const char *zFilename; char zPrevDate[20]; const char *zA; const char *zB; int n; int baseCheckin; int fnid; | | | 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 |
const char *zFilename;
char zPrevDate[20];
const char *zA;
const char *zB;
int n;
int baseCheckin;
int fnid;
Bag ancestor;
Blob title;
Blob sql;
HQuery url;
GraphContext *pGraph;
int brBg = P("brbg")!=0;
int uBg = P("ubg")!=0;
int fDebug = atoi(PD("debug","0"));
|
| ︙ | ︙ | |||
318 319 320 321 322 323 324 325 326 327 328 329 330 331 |
zFilename = PD("name","");
fnid = db_int(0, "SELECT fnid FROM filename WHERE name=%Q", zFilename);
if( fnid==0 ){
@ No such file: %h(zFilename)
style_footer();
return;
}
url_add_parameter(&url, "name", zFilename);
blob_zero(&sql);
blob_append_sql(&sql,
"SELECT"
" datetime(min(event.mtime)%s)," /* Date of change */
" coalesce(event.ecomment, event.comment)," /* Check-in comment */
" coalesce(event.euser, event.user)," /* User who made chng */
| > > > > > > > > | 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 |
zFilename = PD("name","");
fnid = db_int(0, "SELECT fnid FROM filename WHERE name=%Q", zFilename);
if( fnid==0 ){
@ No such file: %h(zFilename)
style_footer();
return;
}
if( baseCheckin ){
int baseFid = db_int(0,
"SELECT fid FROM mlink WHERE fnid=%d AND mid=%d",
fnid, baseCheckin
);
bag_init(&ancestor);
if( baseFid ) bag_insert(&ancestor, baseFid);
}
url_add_parameter(&url, "name", zFilename);
blob_zero(&sql);
blob_append_sql(&sql,
"SELECT"
" datetime(min(event.mtime)%s)," /* Date of change */
" coalesce(event.ecomment, event.comment)," /* Check-in comment */
" coalesce(event.euser, event.user)," /* User who made chng */
|
| ︙ | ︙ | |||
340 341 342 343 344 345 346 |
" mlink.mid," /* check-in ID */
" mlink.pfnid" /* Previous filename */
" FROM mlink, event"
" WHERE mlink.fnid=%d"
" AND event.objid=mlink.mid",
timeline_utc(), TAG_BRANCH, fnid
);
| < < < < < < < < < < < < < < | 348 349 350 351 352 353 354 355 356 357 358 359 360 361 |
" mlink.mid," /* check-in ID */
" mlink.pfnid" /* Previous filename */
" FROM mlink, event"
" WHERE mlink.fnid=%d"
" AND event.objid=mlink.mid",
timeline_utc(), TAG_BRANCH, fnid
);
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);
url_add_parameter(&url, "b", zB);
|
| ︙ | ︙ | |||
414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 |
int fmid = db_column_int(&q, 10);
int pfnid = db_column_int(&q, 11);
int gidx;
char zTime[10];
int nParent = 0;
int aParent[GR_MAX_RAIL];
static Stmt qparent;
db_static_prepare(&qparent,
"SELECT DISTINCT pid FROM mlink"
" WHERE fid=:fid AND mid=:mid AND pid>0 AND fnid=:fnid"
" ORDER BY isaux /*sort*/"
);
db_bind_int(&qparent, ":fid", frid);
db_bind_int(&qparent, ":mid", fmid);
db_bind_int(&qparent, ":fnid", fnid);
while( db_step(&qparent)==SQLITE_ROW && nParent<ArraySize(aParent) ){
| > > | > > | 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 |
int fmid = db_column_int(&q, 10);
int pfnid = db_column_int(&q, 11);
int gidx;
char zTime[10];
int nParent = 0;
int aParent[GR_MAX_RAIL];
static Stmt qparent;
if( baseCheckin && frid && !bag_find(&ancestor, frid) ) continue;
db_static_prepare(&qparent,
"SELECT DISTINCT pid FROM mlink"
" WHERE fid=:fid AND mid=:mid AND pid>0 AND fnid=:fnid"
" ORDER BY isaux /*sort*/"
);
db_bind_int(&qparent, ":fid", frid);
db_bind_int(&qparent, ":mid", fmid);
db_bind_int(&qparent, ":fnid", fnid);
while( db_step(&qparent)==SQLITE_ROW && nParent<ArraySize(aParent) ){
aParent[nParent] = db_column_int(&qparent, 0);
if( baseCheckin ) bag_insert(&ancestor, aParent[nParent]);
nParent++;
}
db_reset(&qparent);
if( zBr==0 ) zBr = "trunk";
if( uBg ){
zBgClr = hash_color(zUser);
}else if( brBg || zBgClr==0 || zBgClr[0]==0 ){
zBgClr = strcmp(zBr,"trunk")==0 ? "" : hash_color(zBr);
|
| ︙ | ︙ | |||
507 508 509 510 511 512 513 514 515 516 517 518 519 520 |
@ <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);
| > | 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 |
@ <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])
}
}
@ %z(href("%R/finfo?name=%T&ci=%s&debug=1",zFilename,zCkin))[ancestry]</a>
}
tag_private_status(frid);
@ </td></tr>
}
db_finalize(&q);
if( pGraph ){
graph_finish(pGraph, 1);
|
| ︙ | ︙ |