Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add the /mlink page (accessible only by Admin users) that shows MLINK table content for a check-in for debugging purposes. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
3fdc2c01279ae85539dee9bffb98b880 |
User & Date: | drh 2015-12-24 14:36:53 |
Context
2015-12-24
| ||
14:57 | Update the built-in SQLite to the latest trunk version to fix a harmless compiler warning that comes up on newer Macs. ... (check-in: 44c147b0 user: drh tags: trunk) | |
14:36 | Add the /mlink page (accessible only by Admin users) that shows MLINK table content for a check-in for debugging purposes. ... (check-in: 3fdc2c01 user: drh tags: trunk) | |
13:28 | Fix a harmless compiler warning and several over-length source code lines. ... (check-in: d94362b6 user: drh tags: trunk) | |
Changes
Changes to src/finfo.c.
︙ | ︙ | |||
554 555 556 557 558 559 560 | @ <tr class="timelineBottom"><td></td><td></td><td></td></tr> } } @ </table> timeline_output_graph_javascript(pGraph, 0, 1); style_footer(); } | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 | @ <tr class="timelineBottom"><td></td><td></td><td></td></tr> } } @ </table> timeline_output_graph_javascript(pGraph, 0, 1); style_footer(); } /* ** WEBPAGE: mlink ** URL: /mlink?name=FILENAME ** URL: /mlink?ci=NAME ** ** Show all MLINK table entries for a particular file, or for ** a particular check-in. This screen is intended for use by developers ** in debugging Fossil. */ void mlink_page(void){ const char *zFName = P("name"); const char *zCI = P("ci"); Stmt q; login_check_credentials(); if( !g.perm.Admin ){ login_needed(g.anon.Admin); return; } style_header("MLINK Table"); if( zFName==0 && zCI==0 ){ @ <span class='generalError'> @ Requires either a name= or ci= query parameter @ </span> }else if( zFName ){ @ <span class='generalError'> @ name= query parameter is not yet implemented. @ </span> }else{ int mid = name_to_rid_www("ci"); db_prepare(&q, "SELECT" /* 0 */ " (SELECT name FROM filename WHERE fnid=mlink.fnid)," /* 1 */ " fid," /* 2 */ " (SELECT uuid FROM blob WHERE rid=mlink.fid)," /* 3 */ " pid," /* 4 */ " (SELECT uuid FROM blob WHERE rid=mlink.pid)," /* 5 */ " (SELECT name FROM filename WHERE fnid=mlink.pfnid)," /* 6 */ " pmid," /* 7 */ " (SELECT uuid FROM blob WHERE rid=mlink.pmid)," /* 8 */ " mperm," /* 9 */ " isaux" " FROM mlink WHERE mid=%d ORDER BY 1", mid ); @ <h1>MLINK table for check-in %h(zCI)</h1> showContext(mid); @ <hr> @ <div class='brlist'> @ <table id='mlinktable'> @ <thead><tr> @ <th>File</th> @ <th>From</th> @ <th>New</th> @ <th>Old</th> @ <th>Exec</th> @ <th>Renamed From</th> @ </tr></thead> @ <tbody> while( db_step(&q)==SQLITE_ROW ){ const char *zName = db_column_text(&q,0); const char *zFid = db_column_text(&q,2); const char *zPid = db_column_text(&q,4); const char *zParent = db_column_text(&q,7); const char *zPrior = db_column_text(&q,5); int isExec = db_column_int(&q,8); @ <tr> @ <td><a href='%R/finfo?name=%t(zName)'>%h(zName)</a></td> if( zParent ){ @ <td><a href='%R/info/%!S(zPid)'>%S(zParent)</a></td> }else{ @ <td><i>(New)</i></td> } if( zFid ){ @ <td><a href='%R/info/%!S(zFid)'>%S(zFid)</a></td> }else{ @ <td><i>(Deleted)</i></td> } if( zPid ){ @ <td><a href='%R/info/%!S(zPid)'>%S(zPid)</a> }else{ @ <td><i>(New)</i></td> } @ <td>%s(isExec?"X":"")</td> if( zPrior ){ @ <td><a href='%R/finfo?name=%t(zPrior)'>%h(zPrior)</a></td> }else{ @ <td></td> } @ </tr> } db_finalize(&q); @ </tbody> @ </table> @ </div> output_table_sorting_javascript("mlinktable","tttttt",1); } style_footer(); } |
Changes to src/info.c.
︙ | ︙ | |||
293 294 295 296 297 298 299 | } } /* ** Show the context graph (immediate parents and children) for ** check-in rid. */ | | < | 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 | } } /* ** Show the context graph (immediate parents and children) for ** check-in rid. */ void showContext(int rid){ Blob sql; Stmt q; blob_zero(&sql); blob_append(&sql, timeline_query_for_www(), -1); db_multi_exec( "CREATE TEMP TABLE IF NOT EXISTS ok(rid INTEGER PRIMARY KEY);" "INSERT INTO ok VALUES(%d);" "INSERT OR IGNORE INTO ok SELECT pid FROM plink WHERE cid=%d;" "INSERT OR IGNORE INTO ok SELECT cid FROM plink WHERE pid=%d;", |
︙ | ︙ | |||
688 689 690 691 692 693 694 695 696 697 698 699 700 701 | @ </table> }else{ style_header("Check-in Information"); login_anonymous_available(); } db_finalize(&q1); showTags(rid); showContext(rid); @ <div class="section">Changes</div> @ <div class="sectionmenu"> verboseFlag = g.zPath[0]!='c'; if( db_get_boolean("show-version-diffs", 0)==0 ){ verboseFlag = !verboseFlag; zPage = "ci"; | > | 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 | @ </table> }else{ style_header("Check-in Information"); login_anonymous_available(); } db_finalize(&q1); showTags(rid); @ <div class="section">Context</div> showContext(rid); @ <div class="section">Changes</div> @ <div class="sectionmenu"> verboseFlag = g.zPath[0]!='c'; if( db_get_boolean("show-version-diffs", 0)==0 ){ verboseFlag = !verboseFlag; zPage = "ci"; |
︙ | ︙ | |||
726 727 728 729 730 731 732 733 734 735 736 737 738 739 | @ %z(xhref("class='button'","%R/%s/%T?sbs=1",zPage,zName)) @ Show Side-by-Side Diffs</a> } if( zParent ){ @ %z(xhref("class='button'","%R/vpatch?from=%!S&to=%!S",zParent,zUuid)) @ Patch</a> } @</div> if( pRe ){ @ <p><b>Only differences that match regular expression "%h(zRe)" @ are shown.</b></p> } db_prepare(&q3, "SELECT name," | > > > | 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 | @ %z(xhref("class='button'","%R/%s/%T?sbs=1",zPage,zName)) @ Show Side-by-Side Diffs</a> } if( zParent ){ @ %z(xhref("class='button'","%R/vpatch?from=%!S&to=%!S",zParent,zUuid)) @ Patch</a> } if( g.perm.Admin ){ @ %z(xhref("class='button'","%R/mlink?ci=%!S",zUuid))MLink Table</a> } @</div> if( pRe ){ @ <p><b>Only differences that match regular expression "%h(zRe)" @ are shown.</b></p> } db_prepare(&q3, "SELECT name," |
︙ | ︙ |