Fossil SCM

Deleted some obsolete "todo" files. Updated the FAQ. Modified the the "vinfo" page to show check-in differences and made "vinfo" the default display for check-ins instead of "vdiff".

drh 2009-08-28 22:59 trunk
Commit 713b8be852b99fee6d3f538707fe4c384c212cad
+1 -1
--- BUILD.txt
+++ BUILD.txt
@@ -13,11 +13,11 @@
1313
1414
--------------------------------------------------------------------------
1515
1616
Here are some notes on what is happening behind the scenes:
1717
18
-* The Makefile just set up a few macros and then invokes the
18
+* The Makefile just sets up a few macros and then invokes the
1919
real makefile in src/main.mk. The src/main.mk makefile is
2020
automatically generated by a TCL script found at src/makemake.tcl.
2121
Do not edit src/main.mk directly. Update src/makemake.tcl and
2222
then rerun it.
2323
2424
--- BUILD.txt
+++ BUILD.txt
@@ -13,11 +13,11 @@
13
14 --------------------------------------------------------------------------
15
16 Here are some notes on what is happening behind the scenes:
17
18 * The Makefile just set up a few macros and then invokes the
19 real makefile in src/main.mk. The src/main.mk makefile is
20 automatically generated by a TCL script found at src/makemake.tcl.
21 Do not edit src/main.mk directly. Update src/makemake.tcl and
22 then rerun it.
23
24
--- BUILD.txt
+++ BUILD.txt
@@ -13,11 +13,11 @@
13
14 --------------------------------------------------------------------------
15
16 Here are some notes on what is happening behind the scenes:
17
18 * The Makefile just sets up a few macros and then invokes the
19 real makefile in src/main.mk. The src/main.mk makefile is
20 automatically generated by a TCL script found at src/makemake.tcl.
21 Do not edit src/main.mk directly. Update src/makemake.tcl and
22 then rerun it.
23
24
+7 -6
--- src/diff.c
+++ src/diff.c
@@ -76,19 +76,19 @@
7676
** Trailing whitespace is removed from each line.
7777
**
7878
** Return 0 if the file is binary or contains a line that is
7979
** too long.
8080
*/
81
-static DLine *break_into_lines(const char *z, int *pnLine){
81
+static DLine *break_into_lines(const char *z, int n, int *pnLine){
8282
int nLine, i, j, k, x;
8383
unsigned int h, h2;
8484
DLine *a;
8585
8686
/* Count the number of lines. Allocate space to hold
8787
** the returned array.
8888
*/
89
- for(i=j=0, nLine=1; z[i]; i++, j++){
89
+ for(i=j=0, nLine=1; i<n; i++, j++){
9090
int c = z[i];
9191
if( c==0 ){
9292
return 0;
9393
}
9494
if( c=='\n' && z[i+1]!=0 ){
@@ -484,12 +484,12 @@
484484
){
485485
DContext c;
486486
487487
/* Prepare the input files */
488488
memset(&c, 0, sizeof(c));
489
- c.aFrom = break_into_lines(blob_str(pA_Blob), &c.nFrom);
490
- c.aTo = break_into_lines(blob_str(pB_Blob), &c.nTo);
489
+ c.aFrom = break_into_lines(blob_str(pA_Blob), blob_size(pA_Blob), &c.nFrom);
490
+ c.aTo = break_into_lines(blob_str(pB_Blob), blob_size(pB_Blob), &c.nTo);
491491
if( c.aFrom==0 || c.aTo==0 ){
492492
free(c.aFrom);
493493
free(c.aTo);
494494
if( pOut ){
495495
blob_appendf(pOut, "cannot compute difference between binary files\n");
@@ -580,11 +580,11 @@
580580
*/
581581
static int annotation_start(Annotator *p, Blob *pInput){
582582
int i;
583583
584584
memset(p, 0, sizeof(*p));
585
- p->c.aTo = break_into_lines(blob_str(pInput), &p->c.nTo);
585
+ p->c.aTo = break_into_lines(blob_str(pInput), blob_size(pInput), &p->c.nTo);
586586
if( p->c.aTo==0 ){
587587
return 1;
588588
}
589589
p->aOrig = malloc( sizeof(p->aOrig[0])*p->c.nTo );
590590
if( p->aOrig==0 ) fossil_panic("out of memory");
@@ -607,11 +607,12 @@
607607
static int annotation_step(Annotator *p, Blob *pParent, char *zPName){
608608
int i, j;
609609
int lnTo;
610610
611611
/* Prepare the parent file to be diffed */
612
- p->c.aFrom = break_into_lines(blob_str(pParent), &p->c.nFrom);
612
+ p->c.aFrom = break_into_lines(blob_str(pParent), blob_size(pParent),
613
+ &p->c.nFrom);
613614
if( p->c.aFrom==0 ){
614615
return 1;
615616
}
616617
617618
/* Compute the differences going from pParent to the file being
618619
--- src/diff.c
+++ src/diff.c
@@ -76,19 +76,19 @@
76 ** Trailing whitespace is removed from each line.
77 **
78 ** Return 0 if the file is binary or contains a line that is
79 ** too long.
80 */
81 static DLine *break_into_lines(const char *z, int *pnLine){
82 int nLine, i, j, k, x;
83 unsigned int h, h2;
84 DLine *a;
85
86 /* Count the number of lines. Allocate space to hold
87 ** the returned array.
88 */
89 for(i=j=0, nLine=1; z[i]; i++, j++){
90 int c = z[i];
91 if( c==0 ){
92 return 0;
93 }
94 if( c=='\n' && z[i+1]!=0 ){
@@ -484,12 +484,12 @@
484 ){
485 DContext c;
486
487 /* Prepare the input files */
488 memset(&c, 0, sizeof(c));
489 c.aFrom = break_into_lines(blob_str(pA_Blob), &c.nFrom);
490 c.aTo = break_into_lines(blob_str(pB_Blob), &c.nTo);
491 if( c.aFrom==0 || c.aTo==0 ){
492 free(c.aFrom);
493 free(c.aTo);
494 if( pOut ){
495 blob_appendf(pOut, "cannot compute difference between binary files\n");
@@ -580,11 +580,11 @@
580 */
581 static int annotation_start(Annotator *p, Blob *pInput){
582 int i;
583
584 memset(p, 0, sizeof(*p));
585 p->c.aTo = break_into_lines(blob_str(pInput), &p->c.nTo);
586 if( p->c.aTo==0 ){
587 return 1;
588 }
589 p->aOrig = malloc( sizeof(p->aOrig[0])*p->c.nTo );
590 if( p->aOrig==0 ) fossil_panic("out of memory");
@@ -607,11 +607,12 @@
607 static int annotation_step(Annotator *p, Blob *pParent, char *zPName){
608 int i, j;
609 int lnTo;
610
611 /* Prepare the parent file to be diffed */
612 p->c.aFrom = break_into_lines(blob_str(pParent), &p->c.nFrom);
 
613 if( p->c.aFrom==0 ){
614 return 1;
615 }
616
617 /* Compute the differences going from pParent to the file being
618
--- src/diff.c
+++ src/diff.c
@@ -76,19 +76,19 @@
76 ** Trailing whitespace is removed from each line.
77 **
78 ** Return 0 if the file is binary or contains a line that is
79 ** too long.
80 */
81 static DLine *break_into_lines(const char *z, int n, int *pnLine){
82 int nLine, i, j, k, x;
83 unsigned int h, h2;
84 DLine *a;
85
86 /* Count the number of lines. Allocate space to hold
87 ** the returned array.
88 */
89 for(i=j=0, nLine=1; i<n; i++, j++){
90 int c = z[i];
91 if( c==0 ){
92 return 0;
93 }
94 if( c=='\n' && z[i+1]!=0 ){
@@ -484,12 +484,12 @@
484 ){
485 DContext c;
486
487 /* Prepare the input files */
488 memset(&c, 0, sizeof(c));
489 c.aFrom = break_into_lines(blob_str(pA_Blob), blob_size(pA_Blob), &c.nFrom);
490 c.aTo = break_into_lines(blob_str(pB_Blob), blob_size(pB_Blob), &c.nTo);
491 if( c.aFrom==0 || c.aTo==0 ){
492 free(c.aFrom);
493 free(c.aTo);
494 if( pOut ){
495 blob_appendf(pOut, "cannot compute difference between binary files\n");
@@ -580,11 +580,11 @@
580 */
581 static int annotation_start(Annotator *p, Blob *pInput){
582 int i;
583
584 memset(p, 0, sizeof(*p));
585 p->c.aTo = break_into_lines(blob_str(pInput), blob_size(pInput), &p->c.nTo);
586 if( p->c.aTo==0 ){
587 return 1;
588 }
589 p->aOrig = malloc( sizeof(p->aOrig[0])*p->c.nTo );
590 if( p->aOrig==0 ) fossil_panic("out of memory");
@@ -607,11 +607,12 @@
607 static int annotation_step(Annotator *p, Blob *pParent, char *zPName){
608 int i, j;
609 int lnTo;
610
611 /* Prepare the parent file to be diffed */
612 p->c.aFrom = break_into_lines(blob_str(pParent), blob_size(pParent),
613 &p->c.nFrom);
614 if( p->c.aFrom==0 ){
615 return 1;
616 }
617
618 /* Compute the differences going from pParent to the file being
619
+63 -25
--- src/info.c
+++ src/info.c
@@ -241,10 +241,11 @@
241241
@ </ul>
242242
}
243243
}
244244
245245
246
+#if 0 /* NOT USED */
246247
/*
247248
** Show information about baselines mentioned in the "leaves" table.
248249
*/
249250
static void showLeaves(int rid){
250251
Stmt q;
@@ -276,10 +277,11 @@
276277
db_finalize(&q);
277278
if( cnt ){
278279
@ </ul>
279280
}
280281
}
282
+#endif
281283
282284
/*
283285
** Show information about all tags on a given node.
284286
*/
285287
static void showTags(int rid, const char *zNotGlob){
@@ -336,17 +338,33 @@
336338
if( cnt ){
337339
@ </ul>
338340
}
339341
}
340342
343
+
344
+/*
345
+** Append the difference between two RIDs to the output
346
+*/
347
+static void append_diff(int fromid, int toid){
348
+ Blob from, to, out;
349
+ content_get(fromid, &from);
350
+ content_get(toid, &to);
351
+ blob_zero(&out);
352
+ text_diff(&from, &to, &out, 5);
353
+ @ %h(blob_str(&out))
354
+ blob_reset(&from);
355
+ blob_reset(&to);
356
+ blob_reset(&out);
357
+}
358
+
341359
342360
/*
343361
** WEBPAGE: vinfo
344362
** WEBPAGE: ci
345363
** URL: /ci?name=RID|ARTIFACTID
346364
**
347
-** Return information about a baseline
365
+** Display information about a particular check-in.
348366
*/
349367
void ci_page(void){
350368
Stmt q;
351369
int rid;
352370
int isLeaf;
@@ -385,15 +403,16 @@
385403
TAG_COMMENT, rid);
386404
zUser = db_column_text(&q, 2);
387405
zComment = db_column_text(&q, 3);
388406
@ <div class="section">Overview</div>
389407
@ <p><table class="label-value">
390
- @ <tr><th>SHA1&nbsp;Hash:</th><td>%s(zUuid)</td></tr>
391
- @ <tr><th>Date:</th><td>%s(db_column_text(&q, 1))</td></tr>
408
+ @ <tr><th>SHA1&nbsp;Hash:</th><td>%s(zUuid)
392409
if( g.okSetup ){
393
- @ <tr><th>Record ID:</th><td>%d(rid)</td></tr>
410
+ @ (Record ID: %d(rid))
394411
}
412
+ @ </td></tr>
413
+ @ <tr><th>Date:</th><td>%s(db_column_text(&q, 1))</td></tr>
395414
if( zEUser ){
396415
@ <tr><th>Edited&nbsp;User:</td><td>%h(zEUser)</td></tr>
397416
@ <tr><th>Original&nbsp;User:</th><td>%h(zUser)</td></tr>
398417
}else{
399418
@ <tr><th>User:</td><td>%h(zUser)</td></tr>
@@ -437,14 +456,13 @@
437456
const char *zTagName = db_column_text(&q, 0);
438457
@ | <a href="%s(g.zBaseURL)/timeline?t=%T(zTagName)">%h(zTagName)</a>
439458
}
440459
db_finalize(&q);
441460
@ </td></tr>
442
- @ <tr><th>Commands:</th>
461
+ @ <tr><th>Other&nbsp;Links:</th>
443462
@ <td>
444
- @ <a href="%s(g.zBaseURL)/vdiff/%s(zShortUuid)">diff</a>
445
- @ | <a href="%s(g.zBaseURL)/dir?ci=%s(zShortUuid)">files</a>
463
+ @ <a href="%s(g.zBaseURL)/dir?ci=%s(zShortUuid)">files</a>
446464
@ | <a href="%s(g.zBaseURL)/zip/%s(zProjName)-%s(zShortUuid).zip?uuid=%s(zUuid)">
447465
@ ZIP archive</a>
448466
@ | <a href="%s(g.zBaseURL)/artifact/%d(rid)">manifest</a>
449467
if( g.okWrite ){
450468
@ | <a href="%s(g.zBaseURL)/ci_edit?r=%d(rid)">edit</a>
@@ -458,11 +476,45 @@
458476
style_header("Check-in Information");
459477
login_anonymous_available();
460478
}
461479
db_finalize(&q);
462480
showTags(rid, "");
463
- @ <div class="section">File Changes</div>
481
+ @ <div class="section">Changes</div>
482
+ db_prepare(&q,
483
+ "SELECT pid, fid, name, substr(a.uuid,1,10), substr(b.uuid,1,10)"
484
+ " FROM mlink JOIN filename ON filename.fnid=mlink.fnid"
485
+ " LEFT JOIN blob a ON a.rid=pid"
486
+ " LEFT JOIN blob b ON b.rid=fid"
487
+ " WHERE mlink.mid=%d"
488
+ " ORDER BY name",
489
+ rid
490
+ );
491
+ while( db_step(&q)==SQLITE_ROW ){
492
+ int pid = db_column_int(&q,0);
493
+ int fid = db_column_int(&q,1);
494
+ const char *zName = db_column_text(&q,2);
495
+ const char *zOld = db_column_text(&q,3);
496
+ const char *zNew = db_column_text(&q,4);
497
+ if( zOld && zNew ){
498
+ @ <p>Modified <a href="%s(g.zBaseURL)/finfo?name=%T(zName)">%h(zName)</a>
499
+ @ from <a href="%s(g.zBaseURL)/artifact/%s(zOld)">[%s(zOld)]</a>
500
+ @ to <a href="%s(g.zBaseURL)/artifact/%s(zNew)">[%s(zNew)]</a></p>
501
+ }else if( zOld ){
502
+ @ <p>Deleted <a href="%s(g.zBaseURL)/finfo?name=%T(zName)">%h(zName)</a>
503
+ @ version <a href="%s(g.zBaseURL)/artifact/%s(zOld)">[%s(zOld)]</a></p>
504
+ continue;
505
+ }else{
506
+ @ <p>Added <a href="%s(g.zBaseURL)/finfo?name=%T(zName)">%h(zName)</a>
507
+ @ version <a href="%s(g.zBaseURL)/artifact/%s(zNew)">[%s(zNew)]</a></p>
508
+ }
509
+ @ <blockquote><pre>
510
+ append_diff(pid, fid);
511
+ @ </pre></blockquote>
512
+ }
513
+ db_finalize(&q);
514
+
515
+#if 0
464516
@ <ul>
465517
db_prepare(&q,
466518
"SELECT a.name, b.name"
467519
" FROM mlink, filename AS a, filename AS b"
468520
" WHERE mid=%d"
@@ -510,10 +562,12 @@
510562
@ </ul>
511563
compute_leaves(rid, 0);
512564
showDescendants(rid, 2, "Descendants");
513565
showLeaves(rid);
514566
showAncestors(rid, 2, "Ancestors");
567
+#endif
568
+
515569
style_footer();
516570
}
517571
518572
/*
519573
** WEBPAGE: winfo
@@ -670,26 +724,10 @@
670724
db_finalize(&q);
671725
@ </table>
672726
style_footer();
673727
}
674728
675
-
676
-/*
677
-** Append the difference between two RIDs to the output
678
-*/
679
-static void append_diff(int fromid, int toid){
680
- Blob from, to, out;
681
- content_get(fromid, &from);
682
- content_get(toid, &to);
683
- blob_zero(&out);
684
- text_diff(&from, &to, &out, 5);
685
- @ %h(blob_str(&out))
686
- blob_reset(&from);
687
- blob_reset(&to);
688
- blob_reset(&out);
689
-}
690
-
691729
692730
/*
693731
** WEBPAGE: vdiff
694732
** URL: /vdiff?name=RID
695733
**
@@ -1222,11 +1260,11 @@
12221260
@ <p>No such object: %h(zName)</p>
12231261
style_footer();
12241262
return;
12251263
}
12261264
if( db_exists("SELECT 1 FROM mlink WHERE mid=%d", rid) ){
1227
- vdiff_page();
1265
+ ci_page();
12281266
}else
12291267
if( db_exists("SELECT 1 FROM tagxref JOIN tag USING(tagid)"
12301268
" WHERE rid=%d AND tagname LIKE 'wiki-%%'", rid) ){
12311269
winfo_page();
12321270
}else
12331271
--- src/info.c
+++ src/info.c
@@ -241,10 +241,11 @@
241 @ </ul>
242 }
243 }
244
245
 
246 /*
247 ** Show information about baselines mentioned in the "leaves" table.
248 */
249 static void showLeaves(int rid){
250 Stmt q;
@@ -276,10 +277,11 @@
276 db_finalize(&q);
277 if( cnt ){
278 @ </ul>
279 }
280 }
 
281
282 /*
283 ** Show information about all tags on a given node.
284 */
285 static void showTags(int rid, const char *zNotGlob){
@@ -336,17 +338,33 @@
336 if( cnt ){
337 @ </ul>
338 }
339 }
340
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
341
342 /*
343 ** WEBPAGE: vinfo
344 ** WEBPAGE: ci
345 ** URL: /ci?name=RID|ARTIFACTID
346 **
347 ** Return information about a baseline
348 */
349 void ci_page(void){
350 Stmt q;
351 int rid;
352 int isLeaf;
@@ -385,15 +403,16 @@
385 TAG_COMMENT, rid);
386 zUser = db_column_text(&q, 2);
387 zComment = db_column_text(&q, 3);
388 @ <div class="section">Overview</div>
389 @ <p><table class="label-value">
390 @ <tr><th>SHA1&nbsp;Hash:</th><td>%s(zUuid)</td></tr>
391 @ <tr><th>Date:</th><td>%s(db_column_text(&q, 1))</td></tr>
392 if( g.okSetup ){
393 @ <tr><th>Record ID:</th><td>%d(rid)</td></tr>
394 }
 
 
395 if( zEUser ){
396 @ <tr><th>Edited&nbsp;User:</td><td>%h(zEUser)</td></tr>
397 @ <tr><th>Original&nbsp;User:</th><td>%h(zUser)</td></tr>
398 }else{
399 @ <tr><th>User:</td><td>%h(zUser)</td></tr>
@@ -437,14 +456,13 @@
437 const char *zTagName = db_column_text(&q, 0);
438 @ | <a href="%s(g.zBaseURL)/timeline?t=%T(zTagName)">%h(zTagName)</a>
439 }
440 db_finalize(&q);
441 @ </td></tr>
442 @ <tr><th>Commands:</th>
443 @ <td>
444 @ <a href="%s(g.zBaseURL)/vdiff/%s(zShortUuid)">diff</a>
445 @ | <a href="%s(g.zBaseURL)/dir?ci=%s(zShortUuid)">files</a>
446 @ | <a href="%s(g.zBaseURL)/zip/%s(zProjName)-%s(zShortUuid).zip?uuid=%s(zUuid)">
447 @ ZIP archive</a>
448 @ | <a href="%s(g.zBaseURL)/artifact/%d(rid)">manifest</a>
449 if( g.okWrite ){
450 @ | <a href="%s(g.zBaseURL)/ci_edit?r=%d(rid)">edit</a>
@@ -458,11 +476,45 @@
458 style_header("Check-in Information");
459 login_anonymous_available();
460 }
461 db_finalize(&q);
462 showTags(rid, "");
463 @ <div class="section">File Changes</div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
464 @ <ul>
465 db_prepare(&q,
466 "SELECT a.name, b.name"
467 " FROM mlink, filename AS a, filename AS b"
468 " WHERE mid=%d"
@@ -510,10 +562,12 @@
510 @ </ul>
511 compute_leaves(rid, 0);
512 showDescendants(rid, 2, "Descendants");
513 showLeaves(rid);
514 showAncestors(rid, 2, "Ancestors");
 
 
515 style_footer();
516 }
517
518 /*
519 ** WEBPAGE: winfo
@@ -670,26 +724,10 @@
670 db_finalize(&q);
671 @ </table>
672 style_footer();
673 }
674
675
676 /*
677 ** Append the difference between two RIDs to the output
678 */
679 static void append_diff(int fromid, int toid){
680 Blob from, to, out;
681 content_get(fromid, &from);
682 content_get(toid, &to);
683 blob_zero(&out);
684 text_diff(&from, &to, &out, 5);
685 @ %h(blob_str(&out))
686 blob_reset(&from);
687 blob_reset(&to);
688 blob_reset(&out);
689 }
690
691
692 /*
693 ** WEBPAGE: vdiff
694 ** URL: /vdiff?name=RID
695 **
@@ -1222,11 +1260,11 @@
1222 @ <p>No such object: %h(zName)</p>
1223 style_footer();
1224 return;
1225 }
1226 if( db_exists("SELECT 1 FROM mlink WHERE mid=%d", rid) ){
1227 vdiff_page();
1228 }else
1229 if( db_exists("SELECT 1 FROM tagxref JOIN tag USING(tagid)"
1230 " WHERE rid=%d AND tagname LIKE 'wiki-%%'", rid) ){
1231 winfo_page();
1232 }else
1233
--- src/info.c
+++ src/info.c
@@ -241,10 +241,11 @@
241 @ </ul>
242 }
243 }
244
245
246 #if 0 /* NOT USED */
247 /*
248 ** Show information about baselines mentioned in the "leaves" table.
249 */
250 static void showLeaves(int rid){
251 Stmt q;
@@ -276,10 +277,11 @@
277 db_finalize(&q);
278 if( cnt ){
279 @ </ul>
280 }
281 }
282 #endif
283
284 /*
285 ** Show information about all tags on a given node.
286 */
287 static void showTags(int rid, const char *zNotGlob){
@@ -336,17 +338,33 @@
338 if( cnt ){
339 @ </ul>
340 }
341 }
342
343
344 /*
345 ** Append the difference between two RIDs to the output
346 */
347 static void append_diff(int fromid, int toid){
348 Blob from, to, out;
349 content_get(fromid, &from);
350 content_get(toid, &to);
351 blob_zero(&out);
352 text_diff(&from, &to, &out, 5);
353 @ %h(blob_str(&out))
354 blob_reset(&from);
355 blob_reset(&to);
356 blob_reset(&out);
357 }
358
359
360 /*
361 ** WEBPAGE: vinfo
362 ** WEBPAGE: ci
363 ** URL: /ci?name=RID|ARTIFACTID
364 **
365 ** Display information about a particular check-in.
366 */
367 void ci_page(void){
368 Stmt q;
369 int rid;
370 int isLeaf;
@@ -385,15 +403,16 @@
403 TAG_COMMENT, rid);
404 zUser = db_column_text(&q, 2);
405 zComment = db_column_text(&q, 3);
406 @ <div class="section">Overview</div>
407 @ <p><table class="label-value">
408 @ <tr><th>SHA1&nbsp;Hash:</th><td>%s(zUuid)
 
409 if( g.okSetup ){
410 @ (Record ID: %d(rid))
411 }
412 @ </td></tr>
413 @ <tr><th>Date:</th><td>%s(db_column_text(&q, 1))</td></tr>
414 if( zEUser ){
415 @ <tr><th>Edited&nbsp;User:</td><td>%h(zEUser)</td></tr>
416 @ <tr><th>Original&nbsp;User:</th><td>%h(zUser)</td></tr>
417 }else{
418 @ <tr><th>User:</td><td>%h(zUser)</td></tr>
@@ -437,14 +456,13 @@
456 const char *zTagName = db_column_text(&q, 0);
457 @ | <a href="%s(g.zBaseURL)/timeline?t=%T(zTagName)">%h(zTagName)</a>
458 }
459 db_finalize(&q);
460 @ </td></tr>
461 @ <tr><th>Other&nbsp;Links:</th>
462 @ <td>
463 @ <a href="%s(g.zBaseURL)/dir?ci=%s(zShortUuid)">files</a>
 
464 @ | <a href="%s(g.zBaseURL)/zip/%s(zProjName)-%s(zShortUuid).zip?uuid=%s(zUuid)">
465 @ ZIP archive</a>
466 @ | <a href="%s(g.zBaseURL)/artifact/%d(rid)">manifest</a>
467 if( g.okWrite ){
468 @ | <a href="%s(g.zBaseURL)/ci_edit?r=%d(rid)">edit</a>
@@ -458,11 +476,45 @@
476 style_header("Check-in Information");
477 login_anonymous_available();
478 }
479 db_finalize(&q);
480 showTags(rid, "");
481 @ <div class="section">Changes</div>
482 db_prepare(&q,
483 "SELECT pid, fid, name, substr(a.uuid,1,10), substr(b.uuid,1,10)"
484 " FROM mlink JOIN filename ON filename.fnid=mlink.fnid"
485 " LEFT JOIN blob a ON a.rid=pid"
486 " LEFT JOIN blob b ON b.rid=fid"
487 " WHERE mlink.mid=%d"
488 " ORDER BY name",
489 rid
490 );
491 while( db_step(&q)==SQLITE_ROW ){
492 int pid = db_column_int(&q,0);
493 int fid = db_column_int(&q,1);
494 const char *zName = db_column_text(&q,2);
495 const char *zOld = db_column_text(&q,3);
496 const char *zNew = db_column_text(&q,4);
497 if( zOld && zNew ){
498 @ <p>Modified <a href="%s(g.zBaseURL)/finfo?name=%T(zName)">%h(zName)</a>
499 @ from <a href="%s(g.zBaseURL)/artifact/%s(zOld)">[%s(zOld)]</a>
500 @ to <a href="%s(g.zBaseURL)/artifact/%s(zNew)">[%s(zNew)]</a></p>
501 }else if( zOld ){
502 @ <p>Deleted <a href="%s(g.zBaseURL)/finfo?name=%T(zName)">%h(zName)</a>
503 @ version <a href="%s(g.zBaseURL)/artifact/%s(zOld)">[%s(zOld)]</a></p>
504 continue;
505 }else{
506 @ <p>Added <a href="%s(g.zBaseURL)/finfo?name=%T(zName)">%h(zName)</a>
507 @ version <a href="%s(g.zBaseURL)/artifact/%s(zNew)">[%s(zNew)]</a></p>
508 }
509 @ <blockquote><pre>
510 append_diff(pid, fid);
511 @ </pre></blockquote>
512 }
513 db_finalize(&q);
514
515 #if 0
516 @ <ul>
517 db_prepare(&q,
518 "SELECT a.name, b.name"
519 " FROM mlink, filename AS a, filename AS b"
520 " WHERE mid=%d"
@@ -510,10 +562,12 @@
562 @ </ul>
563 compute_leaves(rid, 0);
564 showDescendants(rid, 2, "Descendants");
565 showLeaves(rid);
566 showAncestors(rid, 2, "Ancestors");
567 #endif
568
569 style_footer();
570 }
571
572 /*
573 ** WEBPAGE: winfo
@@ -670,26 +724,10 @@
724 db_finalize(&q);
725 @ </table>
726 style_footer();
727 }
728
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
729
730 /*
731 ** WEBPAGE: vdiff
732 ** URL: /vdiff?name=RID
733 **
@@ -1222,11 +1260,11 @@
1260 @ <p>No such object: %h(zName)</p>
1261 style_footer();
1262 return;
1263 }
1264 if( db_exists("SELECT 1 FROM mlink WHERE mid=%d", rid) ){
1265 ci_page();
1266 }else
1267 if( db_exists("SELECT 1 FROM tagxref JOIN tag USING(tagid)"
1268 " WHERE rid=%d AND tagname LIKE 'wiki-%%'", rid) ){
1269 winfo_page();
1270 }else
1271
+1 -1
--- src/timeline.c
+++ src/timeline.c
@@ -54,11 +54,11 @@
5454
){
5555
char zShortUuid[UUID_SIZE+1];
5656
sprintf(zShortUuid, "%.10s", zUuid);
5757
if( g.okHistory ){
5858
@ <a onmouseover='%s(zIn)("m%d(id)")' onmouseout='%s(zOut)("m%d(id)")'
59
- @ href="%s(g.zBaseURL)/vdiff/%s(zUuid)">[%s(zShortUuid)]</a>
59
+ @ href="%s(g.zBaseURL)/vinfo/%s(zUuid)">[%s(zShortUuid)]</a>
6060
}else{
6161
@ <b onmouseover='%s(zIn)("m%d(id)")' onmouseout='%s(zOut)("m%d(id)")'>
6262
@ [%s(zShortUuid)]</b>
6363
}
6464
}
6565
--- src/timeline.c
+++ src/timeline.c
@@ -54,11 +54,11 @@
54 ){
55 char zShortUuid[UUID_SIZE+1];
56 sprintf(zShortUuid, "%.10s", zUuid);
57 if( g.okHistory ){
58 @ <a onmouseover='%s(zIn)("m%d(id)")' onmouseout='%s(zOut)("m%d(id)")'
59 @ href="%s(g.zBaseURL)/vdiff/%s(zUuid)">[%s(zShortUuid)]</a>
60 }else{
61 @ <b onmouseover='%s(zIn)("m%d(id)")' onmouseout='%s(zOut)("m%d(id)")'>
62 @ [%s(zShortUuid)]</b>
63 }
64 }
65
--- src/timeline.c
+++ src/timeline.c
@@ -54,11 +54,11 @@
54 ){
55 char zShortUuid[UUID_SIZE+1];
56 sprintf(zShortUuid, "%.10s", zUuid);
57 if( g.okHistory ){
58 @ <a onmouseover='%s(zIn)("m%d(id)")' onmouseout='%s(zOut)("m%d(id)")'
59 @ href="%s(g.zBaseURL)/vinfo/%s(zUuid)">[%s(zShortUuid)]</a>
60 }else{
61 @ <b onmouseover='%s(zIn)("m%d(id)")' onmouseout='%s(zOut)("m%d(id)")'>
62 @ [%s(zShortUuid)]</b>
63 }
64 }
65
+2 -4
--- www/faq.tcl
+++ www/faq.tcl
@@ -104,20 +104,18 @@
104104
fossil clone http://www.hwaci.com/cgi-bin/fossil fossil.fossil
105105
</pre></blockquote>
106106
Once you have the repository cloned, you can open a local check-out
107107
as follows:
108108
<blockquote><pre>
109
- mkdir fossil; cd fossil; fossil open ../fossil.fossil
109
+ mkdir src; cd src; fossil open ../fossil.fossil
110110
</pre></blockquote>
111111
Thereafter you should be able to keep your local check-out up to date
112
- with the latest code in the public repository simply by typing:
112
+ with the latest code in the public repository by typing:
113113
<blockquote><pre>
114114
fossil update
115115
</pre></blockquote>
116116
}
117
-
118
-
119117
120118
#############################################################################
121119
# Code to actually generate the FAQ
122120
#
123121
puts "<title>Fossil FAQ</title>"
124122
--- www/faq.tcl
+++ www/faq.tcl
@@ -104,20 +104,18 @@
104 fossil clone http://www.hwaci.com/cgi-bin/fossil fossil.fossil
105 </pre></blockquote>
106 Once you have the repository cloned, you can open a local check-out
107 as follows:
108 <blockquote><pre>
109 mkdir fossil; cd fossil; fossil open ../fossil.fossil
110 </pre></blockquote>
111 Thereafter you should be able to keep your local check-out up to date
112 with the latest code in the public repository simply by typing:
113 <blockquote><pre>
114 fossil update
115 </pre></blockquote>
116 }
117
118
119
120 #############################################################################
121 # Code to actually generate the FAQ
122 #
123 puts "<title>Fossil FAQ</title>"
124
--- www/faq.tcl
+++ www/faq.tcl
@@ -104,20 +104,18 @@
104 fossil clone http://www.hwaci.com/cgi-bin/fossil fossil.fossil
105 </pre></blockquote>
106 Once you have the repository cloned, you can open a local check-out
107 as follows:
108 <blockquote><pre>
109 mkdir src; cd src; fossil open ../fossil.fossil
110 </pre></blockquote>
111 Thereafter you should be able to keep your local check-out up to date
112 with the latest code in the public repository by typing:
113 <blockquote><pre>
114 fossil update
115 </pre></blockquote>
116 }
 
 
117
118 #############################################################################
119 # Code to actually generate the FAQ
120 #
121 puts "<title>Fossil FAQ</title>"
122
+2 -2
--- www/faq.wiki
+++ www/faq.wiki
@@ -103,14 +103,14 @@
103103
fossil clone http://www.hwaci.com/cgi-bin/fossil fossil.fossil
104104
</pre></blockquote>
105105
Once you have the repository cloned, you can open a local check-out
106106
as follows:
107107
<blockquote><pre>
108
-mkdir fossil; cd fossil; fossil open ../fossil.fossil
108
+mkdir src; cd src; fossil open ../fossil.fossil
109109
</pre></blockquote>
110110
Thereafter you should be able to keep your local check-out up to date
111
-with the latest code in the public repository simply by typing:
111
+with the latest code in the public repository by typing:
112112
<blockquote><pre>
113113
fossil update
114114
</pre></blockquote></blockquote></li>
115115
116116
</ol>
117117
--- www/faq.wiki
+++ www/faq.wiki
@@ -103,14 +103,14 @@
103 fossil clone http://www.hwaci.com/cgi-bin/fossil fossil.fossil
104 </pre></blockquote>
105 Once you have the repository cloned, you can open a local check-out
106 as follows:
107 <blockquote><pre>
108 mkdir fossil; cd fossil; fossil open ../fossil.fossil
109 </pre></blockquote>
110 Thereafter you should be able to keep your local check-out up to date
111 with the latest code in the public repository simply by typing:
112 <blockquote><pre>
113 fossil update
114 </pre></blockquote></blockquote></li>
115
116 </ol>
117
--- www/faq.wiki
+++ www/faq.wiki
@@ -103,14 +103,14 @@
103 fossil clone http://www.hwaci.com/cgi-bin/fossil fossil.fossil
104 </pre></blockquote>
105 Once you have the repository cloned, you can open a local check-out
106 as follows:
107 <blockquote><pre>
108 mkdir src; cd src; fossil open ../fossil.fossil
109 </pre></blockquote>
110 Thereafter you should be able to keep your local check-out up to date
111 with the latest code in the public repository by typing:
112 <blockquote><pre>
113 fossil update
114 </pre></blockquote></blockquote></li>
115
116 </ol>
117

Keyboard Shortcuts

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