Fossil SCM

Automatically omit merge risers from the graph when the graph is scrunched due to many rails. Make sure there is adequate spacing between the graph and text when the graph is scrunched.

drh 2015-03-10 15:22 trunk merge
Commit dafc3fe42aa40666f5e0456832c3a93dd9273c56
+1 -1
--- src/finfo.c
+++ src/finfo.c
@@ -535,11 +535,11 @@
535535
graph_finish(pGraph, 1);
536536
if( pGraph->nErr ){
537537
graph_free(pGraph);
538538
pGraph = 0;
539539
}else{
540
- int w = (pGraph->mxRail+1)*pGraph->iRailPitch + 10;
540
+ int w = pGraph->mxRail*pGraph->iRailPitch + 28;
541541
@ <tr><td></td><td>
542542
@ <div id="grbtm" style="width:%d(w)px;"></div>
543543
@ </td><td></td></tr>
544544
}
545545
}
546546
--- src/finfo.c
+++ src/finfo.c
@@ -535,11 +535,11 @@
535 graph_finish(pGraph, 1);
536 if( pGraph->nErr ){
537 graph_free(pGraph);
538 pGraph = 0;
539 }else{
540 int w = (pGraph->mxRail+1)*pGraph->iRailPitch + 10;
541 @ <tr><td></td><td>
542 @ <div id="grbtm" style="width:%d(w)px;"></div>
543 @ </td><td></td></tr>
544 }
545 }
546
--- src/finfo.c
+++ src/finfo.c
@@ -535,11 +535,11 @@
535 graph_finish(pGraph, 1);
536 if( pGraph->nErr ){
537 graph_free(pGraph);
538 pGraph = 0;
539 }else{
540 int w = pGraph->mxRail*pGraph->iRailPitch + 28;
541 @ <tr><td></td><td>
542 @ <div id="grbtm" style="width:%d(w)px;"></div>
543 @ </td><td></td></tr>
544 }
545 }
546
+1 -1
--- src/finfo.c
+++ src/finfo.c
@@ -535,11 +535,11 @@
535535
graph_finish(pGraph, 1);
536536
if( pGraph->nErr ){
537537
graph_free(pGraph);
538538
pGraph = 0;
539539
}else{
540
- int w = (pGraph->mxRail+1)*pGraph->iRailPitch + 10;
540
+ int w = pGraph->mxRail*pGraph->iRailPitch + 28;
541541
@ <tr><td></td><td>
542542
@ <div id="grbtm" style="width:%d(w)px;"></div>
543543
@ </td><td></td></tr>
544544
}
545545
}
546546
--- src/finfo.c
+++ src/finfo.c
@@ -535,11 +535,11 @@
535 graph_finish(pGraph, 1);
536 if( pGraph->nErr ){
537 graph_free(pGraph);
538 pGraph = 0;
539 }else{
540 int w = (pGraph->mxRail+1)*pGraph->iRailPitch + 10;
541 @ <tr><td></td><td>
542 @ <div id="grbtm" style="width:%d(w)px;"></div>
543 @ </td><td></td></tr>
544 }
545 }
546
--- src/finfo.c
+++ src/finfo.c
@@ -535,11 +535,11 @@
535 graph_finish(pGraph, 1);
536 if( pGraph->nErr ){
537 graph_free(pGraph);
538 pGraph = 0;
539 }else{
540 int w = pGraph->mxRail*pGraph->iRailPitch + 28;
541 @ <tr><td></td><td>
542 @ <div id="grbtm" style="width:%d(w)px;"></div>
543 @ </td><td></td></tr>
544 }
545 }
546
+15 -7
--- src/timeline.c
+++ src/timeline.c
@@ -586,11 +586,11 @@
586586
}else{
587587
int w;
588588
/* style is not moved to css, because this is
589589
** a technical div for the timeline graph
590590
*/
591
- w = (pGraph->mxRail+1)*pGraph->iRailPitch + 10;
591
+ w = pGraph->mxRail*pGraph->iRailPitch + 28;
592592
@ <tr><td></td><td>
593593
@ <div id="grbtm" style="width:%d(w)px;"></div>
594594
@ </td><td></td></tr>
595595
}
596596
}
@@ -610,18 +610,23 @@
610610
){
611611
if( pGraph && pGraph->nErr==0 && pGraph->nRow>0 ){
612612
GraphRow *pRow;
613613
int i;
614614
char cSep;
615
- int mergeOffset;
615
+ int mergeOffset; /* Pixel offset from rail to merge riser */
616
+ int iRailPitch; /* Pixels between consecutive rails */
617
+ iRailPitch = pGraph->iRailPitch;
616618
617619
/* Number of pixels that the thin merge lines are offset from the
618
- ** the center of the think rail lines */
619
- mergeOffset = pGraph->iRailPitch>=14 ? 4 : pGraph->iRailPitch>=13 ? 3 : 0;
620
+ ** the center of the think rail lines. If zero, then the vertical
621
+ ** merge lines overlap with the thicker rail lines.
622
+ */
623
+ mergeOffset = iRailPitch>=14 ? 4 : iRailPitch>=13 ? 3 : 0;
624
+ if( PB("nomo") ) mergeOffset = 0;
620625
621626
@ <script>
622
- @ var railPitch=%d(pGraph->iRailPitch);
627
+ @ var railPitch=%d(iRailPitch);
623628
624629
/* the rowinfo[] array contains all the information needed to generate
625630
** the graph. Each entry contains information for a single row:
626631
**
627632
** id: The id of the <div> element for the row. This is an integer.
@@ -656,11 +661,11 @@
656661
for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){
657662
int mo = pRow->mergeOut;
658663
if( mo<0 ){
659664
mo = 0;
660665
}else{
661
- int x = (mo/4)*pGraph->iRailPitch;
666
+ int x = (mo/4)*iRailPitch;
662667
switch( mo&3 ){
663668
case 0: x -= mergeOffset-2; break;
664669
case 1: x += 1; break;
665670
case 2: x += mergeOffset+1; break;
666671
}
@@ -689,11 +694,13 @@
689694
cgi_printf("],mi:");
690695
/* mi */
691696
cSep = '[';
692697
for(i=0; i<GR_MAX_RAIL; i++){
693698
if( pRow->mergeIn[i] ){
694
- int mi = i*pGraph->iRailPitch - mergeOffset*(2 - pRow->mergeIn[i]);
699
+ int mi = i*iRailPitch;
700
+ if( pRow->mergeIn[i]==1 ) mi -= mergeOffset-1;
701
+ if( pRow->mergeIn[i]==3 ) mi += mergeOffset;
695702
if( pRow->mergeDown & (1<<i) ) mi = -mi;
696703
cgi_printf("%c%d", cSep, mi);
697704
cSep = ',';
698705
}
699706
}
@@ -819,10 +826,11 @@
819826
@ if( x1>=p.x-5 && x1<=p.x+5 ){
820827
@ y1 = p.y-5;
821828
@ }else{
822829
@ drawThinLine(x0,y1,x1,y1);
823830
@ }
831
+ if( mergeOffset>0 ) cgi_printf("if( p.mo!=p.u-1 ) ");
824832
@ drawThinLine(x1,y0,x1,y1);
825833
@ }
826834
@ var n = p.au.length;
827835
@ for(var i=0; i<n; i+=2){
828836
@ var x1 = p.au[i]*railPitch + left;
829837
--- src/timeline.c
+++ src/timeline.c
@@ -586,11 +586,11 @@
586 }else{
587 int w;
588 /* style is not moved to css, because this is
589 ** a technical div for the timeline graph
590 */
591 w = (pGraph->mxRail+1)*pGraph->iRailPitch + 10;
592 @ <tr><td></td><td>
593 @ <div id="grbtm" style="width:%d(w)px;"></div>
594 @ </td><td></td></tr>
595 }
596 }
@@ -610,18 +610,23 @@
610 ){
611 if( pGraph && pGraph->nErr==0 && pGraph->nRow>0 ){
612 GraphRow *pRow;
613 int i;
614 char cSep;
615 int mergeOffset;
 
 
616
617 /* Number of pixels that the thin merge lines are offset from the
618 ** the center of the think rail lines */
619 mergeOffset = pGraph->iRailPitch>=14 ? 4 : pGraph->iRailPitch>=13 ? 3 : 0;
 
 
 
620
621 @ <script>
622 @ var railPitch=%d(pGraph->iRailPitch);
623
624 /* the rowinfo[] array contains all the information needed to generate
625 ** the graph. Each entry contains information for a single row:
626 **
627 ** id: The id of the <div> element for the row. This is an integer.
@@ -656,11 +661,11 @@
656 for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){
657 int mo = pRow->mergeOut;
658 if( mo<0 ){
659 mo = 0;
660 }else{
661 int x = (mo/4)*pGraph->iRailPitch;
662 switch( mo&3 ){
663 case 0: x -= mergeOffset-2; break;
664 case 1: x += 1; break;
665 case 2: x += mergeOffset+1; break;
666 }
@@ -689,11 +694,13 @@
689 cgi_printf("],mi:");
690 /* mi */
691 cSep = '[';
692 for(i=0; i<GR_MAX_RAIL; i++){
693 if( pRow->mergeIn[i] ){
694 int mi = i*pGraph->iRailPitch - mergeOffset*(2 - pRow->mergeIn[i]);
 
 
695 if( pRow->mergeDown & (1<<i) ) mi = -mi;
696 cgi_printf("%c%d", cSep, mi);
697 cSep = ',';
698 }
699 }
@@ -819,10 +826,11 @@
819 @ if( x1>=p.x-5 && x1<=p.x+5 ){
820 @ y1 = p.y-5;
821 @ }else{
822 @ drawThinLine(x0,y1,x1,y1);
823 @ }
 
824 @ drawThinLine(x1,y0,x1,y1);
825 @ }
826 @ var n = p.au.length;
827 @ for(var i=0; i<n; i+=2){
828 @ var x1 = p.au[i]*railPitch + left;
829
--- src/timeline.c
+++ src/timeline.c
@@ -586,11 +586,11 @@
586 }else{
587 int w;
588 /* style is not moved to css, because this is
589 ** a technical div for the timeline graph
590 */
591 w = pGraph->mxRail*pGraph->iRailPitch + 28;
592 @ <tr><td></td><td>
593 @ <div id="grbtm" style="width:%d(w)px;"></div>
594 @ </td><td></td></tr>
595 }
596 }
@@ -610,18 +610,23 @@
610 ){
611 if( pGraph && pGraph->nErr==0 && pGraph->nRow>0 ){
612 GraphRow *pRow;
613 int i;
614 char cSep;
615 int mergeOffset; /* Pixel offset from rail to merge riser */
616 int iRailPitch; /* Pixels between consecutive rails */
617 iRailPitch = pGraph->iRailPitch;
618
619 /* Number of pixels that the thin merge lines are offset from the
620 ** the center of the think rail lines. If zero, then the vertical
621 ** merge lines overlap with the thicker rail lines.
622 */
623 mergeOffset = iRailPitch>=14 ? 4 : iRailPitch>=13 ? 3 : 0;
624 if( PB("nomo") ) mergeOffset = 0;
625
626 @ <script>
627 @ var railPitch=%d(iRailPitch);
628
629 /* the rowinfo[] array contains all the information needed to generate
630 ** the graph. Each entry contains information for a single row:
631 **
632 ** id: The id of the <div> element for the row. This is an integer.
@@ -656,11 +661,11 @@
661 for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){
662 int mo = pRow->mergeOut;
663 if( mo<0 ){
664 mo = 0;
665 }else{
666 int x = (mo/4)*iRailPitch;
667 switch( mo&3 ){
668 case 0: x -= mergeOffset-2; break;
669 case 1: x += 1; break;
670 case 2: x += mergeOffset+1; break;
671 }
@@ -689,11 +694,13 @@
694 cgi_printf("],mi:");
695 /* mi */
696 cSep = '[';
697 for(i=0; i<GR_MAX_RAIL; i++){
698 if( pRow->mergeIn[i] ){
699 int mi = i*iRailPitch;
700 if( pRow->mergeIn[i]==1 ) mi -= mergeOffset-1;
701 if( pRow->mergeIn[i]==3 ) mi += mergeOffset;
702 if( pRow->mergeDown & (1<<i) ) mi = -mi;
703 cgi_printf("%c%d", cSep, mi);
704 cSep = ',';
705 }
706 }
@@ -819,10 +826,11 @@
826 @ if( x1>=p.x-5 && x1<=p.x+5 ){
827 @ y1 = p.y-5;
828 @ }else{
829 @ drawThinLine(x0,y1,x1,y1);
830 @ }
831 if( mergeOffset>0 ) cgi_printf("if( p.mo!=p.u-1 ) ");
832 @ drawThinLine(x1,y0,x1,y1);
833 @ }
834 @ var n = p.au.length;
835 @ for(var i=0; i<n; i+=2){
836 @ var x1 = p.au[i]*railPitch + left;
837
+15 -7
--- src/timeline.c
+++ src/timeline.c
@@ -586,11 +586,11 @@
586586
}else{
587587
int w;
588588
/* style is not moved to css, because this is
589589
** a technical div for the timeline graph
590590
*/
591
- w = (pGraph->mxRail+1)*pGraph->iRailPitch + 10;
591
+ w = pGraph->mxRail*pGraph->iRailPitch + 28;
592592
@ <tr><td></td><td>
593593
@ <div id="grbtm" style="width:%d(w)px;"></div>
594594
@ </td><td></td></tr>
595595
}
596596
}
@@ -610,18 +610,23 @@
610610
){
611611
if( pGraph && pGraph->nErr==0 && pGraph->nRow>0 ){
612612
GraphRow *pRow;
613613
int i;
614614
char cSep;
615
- int mergeOffset;
615
+ int mergeOffset; /* Pixel offset from rail to merge riser */
616
+ int iRailPitch; /* Pixels between consecutive rails */
617
+ iRailPitch = pGraph->iRailPitch;
616618
617619
/* Number of pixels that the thin merge lines are offset from the
618
- ** the center of the think rail lines */
619
- mergeOffset = pGraph->iRailPitch>=14 ? 4 : pGraph->iRailPitch>=13 ? 3 : 0;
620
+ ** the center of the think rail lines. If zero, then the vertical
621
+ ** merge lines overlap with the thicker rail lines.
622
+ */
623
+ mergeOffset = iRailPitch>=14 ? 4 : iRailPitch>=13 ? 3 : 0;
624
+ if( PB("nomo") ) mergeOffset = 0;
620625
621626
@ <script>
622
- @ var railPitch=%d(pGraph->iRailPitch);
627
+ @ var railPitch=%d(iRailPitch);
623628
624629
/* the rowinfo[] array contains all the information needed to generate
625630
** the graph. Each entry contains information for a single row:
626631
**
627632
** id: The id of the <div> element for the row. This is an integer.
@@ -656,11 +661,11 @@
656661
for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){
657662
int mo = pRow->mergeOut;
658663
if( mo<0 ){
659664
mo = 0;
660665
}else{
661
- int x = (mo/4)*pGraph->iRailPitch;
666
+ int x = (mo/4)*iRailPitch;
662667
switch( mo&3 ){
663668
case 0: x -= mergeOffset-2; break;
664669
case 1: x += 1; break;
665670
case 2: x += mergeOffset+1; break;
666671
}
@@ -689,11 +694,13 @@
689694
cgi_printf("],mi:");
690695
/* mi */
691696
cSep = '[';
692697
for(i=0; i<GR_MAX_RAIL; i++){
693698
if( pRow->mergeIn[i] ){
694
- int mi = i*pGraph->iRailPitch - mergeOffset*(2 - pRow->mergeIn[i]);
699
+ int mi = i*iRailPitch;
700
+ if( pRow->mergeIn[i]==1 ) mi -= mergeOffset-1;
701
+ if( pRow->mergeIn[i]==3 ) mi += mergeOffset;
695702
if( pRow->mergeDown & (1<<i) ) mi = -mi;
696703
cgi_printf("%c%d", cSep, mi);
697704
cSep = ',';
698705
}
699706
}
@@ -819,10 +826,11 @@
819826
@ if( x1>=p.x-5 && x1<=p.x+5 ){
820827
@ y1 = p.y-5;
821828
@ }else{
822829
@ drawThinLine(x0,y1,x1,y1);
823830
@ }
831
+ if( mergeOffset>0 ) cgi_printf("if( p.mo!=p.u-1 ) ");
824832
@ drawThinLine(x1,y0,x1,y1);
825833
@ }
826834
@ var n = p.au.length;
827835
@ for(var i=0; i<n; i+=2){
828836
@ var x1 = p.au[i]*railPitch + left;
829837
--- src/timeline.c
+++ src/timeline.c
@@ -586,11 +586,11 @@
586 }else{
587 int w;
588 /* style is not moved to css, because this is
589 ** a technical div for the timeline graph
590 */
591 w = (pGraph->mxRail+1)*pGraph->iRailPitch + 10;
592 @ <tr><td></td><td>
593 @ <div id="grbtm" style="width:%d(w)px;"></div>
594 @ </td><td></td></tr>
595 }
596 }
@@ -610,18 +610,23 @@
610 ){
611 if( pGraph && pGraph->nErr==0 && pGraph->nRow>0 ){
612 GraphRow *pRow;
613 int i;
614 char cSep;
615 int mergeOffset;
 
 
616
617 /* Number of pixels that the thin merge lines are offset from the
618 ** the center of the think rail lines */
619 mergeOffset = pGraph->iRailPitch>=14 ? 4 : pGraph->iRailPitch>=13 ? 3 : 0;
 
 
 
620
621 @ <script>
622 @ var railPitch=%d(pGraph->iRailPitch);
623
624 /* the rowinfo[] array contains all the information needed to generate
625 ** the graph. Each entry contains information for a single row:
626 **
627 ** id: The id of the <div> element for the row. This is an integer.
@@ -656,11 +661,11 @@
656 for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){
657 int mo = pRow->mergeOut;
658 if( mo<0 ){
659 mo = 0;
660 }else{
661 int x = (mo/4)*pGraph->iRailPitch;
662 switch( mo&3 ){
663 case 0: x -= mergeOffset-2; break;
664 case 1: x += 1; break;
665 case 2: x += mergeOffset+1; break;
666 }
@@ -689,11 +694,13 @@
689 cgi_printf("],mi:");
690 /* mi */
691 cSep = '[';
692 for(i=0; i<GR_MAX_RAIL; i++){
693 if( pRow->mergeIn[i] ){
694 int mi = i*pGraph->iRailPitch - mergeOffset*(2 - pRow->mergeIn[i]);
 
 
695 if( pRow->mergeDown & (1<<i) ) mi = -mi;
696 cgi_printf("%c%d", cSep, mi);
697 cSep = ',';
698 }
699 }
@@ -819,10 +826,11 @@
819 @ if( x1>=p.x-5 && x1<=p.x+5 ){
820 @ y1 = p.y-5;
821 @ }else{
822 @ drawThinLine(x0,y1,x1,y1);
823 @ }
 
824 @ drawThinLine(x1,y0,x1,y1);
825 @ }
826 @ var n = p.au.length;
827 @ for(var i=0; i<n; i+=2){
828 @ var x1 = p.au[i]*railPitch + left;
829
--- src/timeline.c
+++ src/timeline.c
@@ -586,11 +586,11 @@
586 }else{
587 int w;
588 /* style is not moved to css, because this is
589 ** a technical div for the timeline graph
590 */
591 w = pGraph->mxRail*pGraph->iRailPitch + 28;
592 @ <tr><td></td><td>
593 @ <div id="grbtm" style="width:%d(w)px;"></div>
594 @ </td><td></td></tr>
595 }
596 }
@@ -610,18 +610,23 @@
610 ){
611 if( pGraph && pGraph->nErr==0 && pGraph->nRow>0 ){
612 GraphRow *pRow;
613 int i;
614 char cSep;
615 int mergeOffset; /* Pixel offset from rail to merge riser */
616 int iRailPitch; /* Pixels between consecutive rails */
617 iRailPitch = pGraph->iRailPitch;
618
619 /* Number of pixels that the thin merge lines are offset from the
620 ** the center of the think rail lines. If zero, then the vertical
621 ** merge lines overlap with the thicker rail lines.
622 */
623 mergeOffset = iRailPitch>=14 ? 4 : iRailPitch>=13 ? 3 : 0;
624 if( PB("nomo") ) mergeOffset = 0;
625
626 @ <script>
627 @ var railPitch=%d(iRailPitch);
628
629 /* the rowinfo[] array contains all the information needed to generate
630 ** the graph. Each entry contains information for a single row:
631 **
632 ** id: The id of the <div> element for the row. This is an integer.
@@ -656,11 +661,11 @@
661 for(pRow=pGraph->pFirst; pRow; pRow=pRow->pNext){
662 int mo = pRow->mergeOut;
663 if( mo<0 ){
664 mo = 0;
665 }else{
666 int x = (mo/4)*iRailPitch;
667 switch( mo&3 ){
668 case 0: x -= mergeOffset-2; break;
669 case 1: x += 1; break;
670 case 2: x += mergeOffset+1; break;
671 }
@@ -689,11 +694,13 @@
694 cgi_printf("],mi:");
695 /* mi */
696 cSep = '[';
697 for(i=0; i<GR_MAX_RAIL; i++){
698 if( pRow->mergeIn[i] ){
699 int mi = i*iRailPitch;
700 if( pRow->mergeIn[i]==1 ) mi -= mergeOffset-1;
701 if( pRow->mergeIn[i]==3 ) mi += mergeOffset;
702 if( pRow->mergeDown & (1<<i) ) mi = -mi;
703 cgi_printf("%c%d", cSep, mi);
704 cSep = ',';
705 }
706 }
@@ -819,10 +826,11 @@
826 @ if( x1>=p.x-5 && x1<=p.x+5 ){
827 @ y1 = p.y-5;
828 @ }else{
829 @ drawThinLine(x0,y1,x1,y1);
830 @ }
831 if( mergeOffset>0 ) cgi_printf("if( p.mo!=p.u-1 ) ");
832 @ drawThinLine(x1,y0,x1,y1);
833 @ }
834 @ var n = p.au.length;
835 @ for(var i=0; i<n; i+=2){
836 @ var x1 = p.au[i]*railPitch + left;
837
--- test/graph-test-1.wiki
+++ test/graph-test-1.wiki
@@ -64,13 +64,21 @@
6464
Merge on the same branch does not result in a leaf.
6565
</a>
6666
* <a href="../../../timeline?c=20015206bc"
6767
target="testwindow">
6868
This timeline has a hidden commit.</a> Click Unhide to reveal.
69
+ * <a href="../../../timeline?y=ci&n=15&b=2a4e4cf03e"
70
+ target="testwindow">Isolated check-ins.</a>
6971
7072
External:
7173
7274
* <a href="http://www.sqlite.org/src/timeline?c=2010-09-29&nd"
7375
target="testwindow">Timewarp due to a mis-configured system clock.</a>
7476
* <a href="http://core.tcl.tk/tk/finfo?name=tests/id.test"
7577
target="testwindow">Show all three separate deletions of "id.test".
7678
(Scroll down for the third deletion.)
79
+ * <a href='http://core.tcl.tk/tk/timeline?y=ci&b=2015-03-07'
80
+ target='testwindow'>Merge arrows to the left and to the right</a>
81
+ * <a href='http://core.tcl.tk/tk/timeline?y=ci&b=2015-03-07&railpitch=13'
82
+ target='testwindow'>Previous, with a scrunched graph</a>
83
+ * <a href='http://core.tcl.tk/tk/timeline?y=ci&b=2015-03-07&railpitch=11'
84
+ target='testwindow'>Previous, with a severely scrunched graph</a>
7785
--- test/graph-test-1.wiki
+++ test/graph-test-1.wiki
@@ -64,13 +64,21 @@
64 Merge on the same branch does not result in a leaf.
65 </a>
66 * <a href="../../../timeline?c=20015206bc"
67 target="testwindow">
68 This timeline has a hidden commit.</a> Click Unhide to reveal.
 
 
69
70 External:
71
72 * <a href="http://www.sqlite.org/src/timeline?c=2010-09-29&nd"
73 target="testwindow">Timewarp due to a mis-configured system clock.</a>
74 * <a href="http://core.tcl.tk/tk/finfo?name=tests/id.test"
75 target="testwindow">Show all three separate deletions of "id.test".
76 (Scroll down for the third deletion.)
 
 
 
 
 
 
77
--- test/graph-test-1.wiki
+++ test/graph-test-1.wiki
@@ -64,13 +64,21 @@
64 Merge on the same branch does not result in a leaf.
65 </a>
66 * <a href="../../../timeline?c=20015206bc"
67 target="testwindow">
68 This timeline has a hidden commit.</a> Click Unhide to reveal.
69 * <a href="../../../timeline?y=ci&n=15&b=2a4e4cf03e"
70 target="testwindow">Isolated check-ins.</a>
71
72 External:
73
74 * <a href="http://www.sqlite.org/src/timeline?c=2010-09-29&nd"
75 target="testwindow">Timewarp due to a mis-configured system clock.</a>
76 * <a href="http://core.tcl.tk/tk/finfo?name=tests/id.test"
77 target="testwindow">Show all three separate deletions of "id.test".
78 (Scroll down for the third deletion.)
79 * <a href='http://core.tcl.tk/tk/timeline?y=ci&b=2015-03-07'
80 target='testwindow'>Merge arrows to the left and to the right</a>
81 * <a href='http://core.tcl.tk/tk/timeline?y=ci&b=2015-03-07&railpitch=13'
82 target='testwindow'>Previous, with a scrunched graph</a>
83 * <a href='http://core.tcl.tk/tk/timeline?y=ci&b=2015-03-07&railpitch=11'
84 target='testwindow'>Previous, with a severely scrunched graph</a>
85
--- test/graph-test-1.wiki
+++ test/graph-test-1.wiki
@@ -64,13 +64,21 @@
6464
Merge on the same branch does not result in a leaf.
6565
</a>
6666
* <a href="../../../timeline?c=20015206bc"
6767
target="testwindow">
6868
This timeline has a hidden commit.</a> Click Unhide to reveal.
69
+ * <a href="../../../timeline?y=ci&n=15&b=2a4e4cf03e"
70
+ target="testwindow">Isolated check-ins.</a>
6971
7072
External:
7173
7274
* <a href="http://www.sqlite.org/src/timeline?c=2010-09-29&nd"
7375
target="testwindow">Timewarp due to a mis-configured system clock.</a>
7476
* <a href="http://core.tcl.tk/tk/finfo?name=tests/id.test"
7577
target="testwindow">Show all three separate deletions of "id.test".
7678
(Scroll down for the third deletion.)
79
+ * <a href='http://core.tcl.tk/tk/timeline?y=ci&b=2015-03-07'
80
+ target='testwindow'>Merge arrows to the left and to the right</a>
81
+ * <a href='http://core.tcl.tk/tk/timeline?y=ci&b=2015-03-07&railpitch=13'
82
+ target='testwindow'>Previous, with a scrunched graph</a>
83
+ * <a href='http://core.tcl.tk/tk/timeline?y=ci&b=2015-03-07&railpitch=11'
84
+ target='testwindow'>Previous, with a severely scrunched graph</a>
7785
--- test/graph-test-1.wiki
+++ test/graph-test-1.wiki
@@ -64,13 +64,21 @@
64 Merge on the same branch does not result in a leaf.
65 </a>
66 * <a href="../../../timeline?c=20015206bc"
67 target="testwindow">
68 This timeline has a hidden commit.</a> Click Unhide to reveal.
 
 
69
70 External:
71
72 * <a href="http://www.sqlite.org/src/timeline?c=2010-09-29&nd"
73 target="testwindow">Timewarp due to a mis-configured system clock.</a>
74 * <a href="http://core.tcl.tk/tk/finfo?name=tests/id.test"
75 target="testwindow">Show all three separate deletions of "id.test".
76 (Scroll down for the third deletion.)
 
 
 
 
 
 
77
--- test/graph-test-1.wiki
+++ test/graph-test-1.wiki
@@ -64,13 +64,21 @@
64 Merge on the same branch does not result in a leaf.
65 </a>
66 * <a href="../../../timeline?c=20015206bc"
67 target="testwindow">
68 This timeline has a hidden commit.</a> Click Unhide to reveal.
69 * <a href="../../../timeline?y=ci&n=15&b=2a4e4cf03e"
70 target="testwindow">Isolated check-ins.</a>
71
72 External:
73
74 * <a href="http://www.sqlite.org/src/timeline?c=2010-09-29&nd"
75 target="testwindow">Timewarp due to a mis-configured system clock.</a>
76 * <a href="http://core.tcl.tk/tk/finfo?name=tests/id.test"
77 target="testwindow">Show all three separate deletions of "id.test".
78 (Scroll down for the third deletion.)
79 * <a href='http://core.tcl.tk/tk/timeline?y=ci&b=2015-03-07'
80 target='testwindow'>Merge arrows to the left and to the right</a>
81 * <a href='http://core.tcl.tk/tk/timeline?y=ci&b=2015-03-07&railpitch=13'
82 target='testwindow'>Previous, with a scrunched graph</a>
83 * <a href='http://core.tcl.tk/tk/timeline?y=ci&b=2015-03-07&railpitch=11'
84 target='testwindow'>Previous, with a severely scrunched graph</a>
85

Keyboard Shortcuts

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