Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Comment improvements in the schema. Attempt to get the /finfo page to show merge arrows. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | mlink-improvements |
| Files: | files | file ages | folders |
| SHA1: |
7d5a85bba8db9f2398a61fa4709a9665 |
| User & Date: | drh 2015-01-25 01:30:24.800 |
Context
|
2015-01-25
| ||
| 02:29 | Some minor fixes to the /finfo tree construction. Still having problems with incorrect mlink entries being created for files added by merge. check-in: f603a91432 user: drh tags: mlink-improvements | |
| 01:30 | Comment improvements in the schema. Attempt to get the /finfo page to show merge arrows. check-in: 7d5a85bba8 user: drh tags: mlink-improvements | |
| 00:20 | Enhance the MLINK table schema to record file changes from all parents. Requires a "fossil rebuild". Other schema cleanups at the same time. check-in: a241444d8f user: drh tags: mlink-improvements | |
Changes
Changes to src/finfo.c.
| ︙ | ︙ | |||
301 302 303 304 305 306 307 308 309 310 311 312 313 314 |
Blob sql;
HQuery url;
GraphContext *pGraph;
int brBg = P("brbg")!=0;
int uBg = P("ubg")!=0;
int firstChngOnly = atoi(PD("fco","1"))!=0;
int fDebug = atoi(PD("debug","0"));
login_check_credentials();
if( !g.perm.Read ){ login_needed(); return; }
style_header("File History");
login_anonymous_available();
url_initialize(&url, "finfo");
if( brBg ) url_add_parameter(&url, "brbg", 0);
| > | 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 |
Blob sql;
HQuery url;
GraphContext *pGraph;
int brBg = P("brbg")!=0;
int uBg = P("ubg")!=0;
int firstChngOnly = atoi(PD("fco","1"))!=0;
int fDebug = atoi(PD("debug","0"));
int fShowId = P("showid")!=0;
login_check_credentials();
if( !g.perm.Read ){ login_needed(); return; }
style_header("File History");
login_anonymous_available();
url_initialize(&url, "finfo");
if( brBg ) url_add_parameter(&url, "brbg", 0);
|
| ︙ | ︙ | |||
420 421 422 423 424 425 426 427 428 429 430 431 432 |
const char *zCkin = db_column_text(&q,7);
const char *zBgClr = db_column_text(&q, 8);
const char *zBr = db_column_text(&q, 9);
int fmid = db_column_int(&q, 10);
int pfnid = db_column_int(&q, 11);
int gidx;
char zTime[10];
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);
}
| > > > > > > > > > > > > > > | | 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 |
const char *zCkin = db_column_text(&q,7);
const char *zBgClr = db_column_text(&q, 8);
const char *zBr = db_column_text(&q, 9);
int fmid = db_column_int(&q, 10);
int pfnid = db_column_int(&q, 11);
int gidx;
char zTime[10];
int nParent = 0;
int aParent[32];
static Stmt qparent;
db_static_prepare(&qparent,
"SELECT DISTINCT pid FROM mlink"
" WHERE fid=:fid AND mid=:mid"
" ORDER BY isaux /*sort*/"
);
db_bind_int(&qparent, ":fid", frid);
db_bind_int(&qparent, ":mid", fmid);
while( db_step(&qparent)==SQLITE_ROW && nParent<32 ){
aParent[nParent++] = db_column_int(&qparent, 0);
}
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);
}
gidx = graph_add_row(pGraph, frid, nParent, aParent, zBr, zBgClr,
zUuid, 0);
if( strncmp(zDate, zPrevDate, 10) ){
sqlite3_snprintf(sizeof(zPrevDate), zPrevDate, "%.10s", zDate);
@ <tr><td>
@ <div class="divider">%s(zPrevDate)</div>
@ </td><td></td><td></td></tr>
}
|
| ︙ | ︙ | |||
453 454 455 456 457 458 459 |
@ <b>Added</b>
}else if( pfnid ){
char *zPrevName = db_text(0, "SELECT name FROM filename WHERE fnid=%d",
pfnid);
@ <b>Renamed</b> from
@ %z(href("%R/finfo?name=%t", zPrevName))%h(zPrevName)</a>
}
| | > > > > > > > | 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 |
@ <b>Added</b>
}else if( pfnid ){
char *zPrevName = db_text(0, "SELECT name FROM filename WHERE fnid=%d",
pfnid);
@ <b>Renamed</b> from
@ %z(href("%R/finfo?name=%t", zPrevName))%h(zPrevName)</a>
}
@ %z(href("%R/artifact/%s",zUuid))[%S(zUuid)]</a>
if( fShowId ){
@ (%d(frid))
}
@ part of check-in
}else{
char *zNewName;
zNewName = db_text(0,
"SELECT name FROM filename WHERE fnid = "
" (SELECT fnid FROM mlink"
" WHERE mid=%d"
" AND pfnid IN (SELECT fnid FROM filename WHERE name=%Q))",
fmid, zFilename);
if( zNewName ){
@ <b>Renamed</b> to
@ %z(href("%R/finfo?name=%t",zNewName))%h(zNewName)</a> by check-in
fossil_free(zNewName);
}else{
@ <b>Deleted</b> by check-in
}
}
hyperlink_to_uuid(zCkin);
if( fShowId ){
@ (%d(fmid))
}
@ %W(zCom) (user:
hyperlink_to_user(zUser, zDate, "");
@ branch: %h(zBr))
if( g.perm.Hyperlink && zUuid ){
const char *z = zFilename;
@ %z(href("%R/annotate?filename=%h&checkin=%s",z,zCkin))
@ [annotate]</a>
|
| ︙ | ︙ |
Changes to src/schema.c.
| ︙ | ︙ | |||
245 246 247 248 249 250 251 252 253 254 255 256 257 258 | @ -- of the file in the mid check-in. If the file was renamed as part @ -- of the mid check-in, then pfnid is the previous filename. @ @ -- There can be multiple entries for (mid,fid) if the mid checkin was @ -- a merge. Entries with isaux==0 are from the primary parent. Merge @ -- parents have isaux set to true. @ -- @ -- pid==0 if the file is added by checkin mid. @ -- fid==0 if the file is removed by checkin mid. @ -- @ CREATE TABLE mlink( @ mid INTEGER REFERENCES plink(cid), -- Checkin that contains fid @ fid INTEGER REFERENCES blob, -- New file content. 0 if deleted @ pmid INTEGER REFERENCES plink(cid), -- Checkin that contains pid | > > > > > > > > > > | 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 | @ -- of the file in the mid check-in. If the file was renamed as part @ -- of the mid check-in, then pfnid is the previous filename. @ @ -- There can be multiple entries for (mid,fid) if the mid checkin was @ -- a merge. Entries with isaux==0 are from the primary parent. Merge @ -- parents have isaux set to true. @ -- @ -- Field name mnemonics: @ -- mid = Manifest ID. (Each check-in is stored as a "Manifest") @ -- fid = File ID. @ -- pmid = Parent Manifest ID. @ -- pid = Parent file ID. @ -- fnid = File Name ID. @ -- pfnid = Parent File Name ID. @ -- fclass = FileCLASS id. @ -- isaux = pmid IS AUXiliary parent, not primary parent @ -- @ -- pid==0 if the file is added by checkin mid. @ -- fid==0 if the file is removed by checkin mid. @ -- @ CREATE TABLE mlink( @ mid INTEGER REFERENCES plink(cid), -- Checkin that contains fid @ fid INTEGER REFERENCES blob, -- New file content. 0 if deleted @ pmid INTEGER REFERENCES plink(cid), -- Checkin that contains pid |
| ︙ | ︙ |