Fossil SCM

Identify unpublished (private) artifacts on timelines and in artifact descriptions.

drh 2014-11-26 17:36 UTC DBP-workflow
Commit 1d7620999a7d90ae7f98457f06016ae56935588a
--- src/finfo.c
+++ src/finfo.c
@@ -495,10 +495,11 @@
495495
@ <br>fid=%d(frid) pid=%d(fpid) mid=%d(fmid) sz=%d(sz)
496496
if( srcid ){
497497
@ srcid=%d(srcid)
498498
}
499499
}
500
+ tag_private_status(frid);
500501
@ </td></tr>
501502
}
502503
db_finalize(&q);
503504
if( pGraph ){
504505
graph_finish(pGraph, 0);
505506
--- src/finfo.c
+++ src/finfo.c
@@ -495,10 +495,11 @@
495 @ <br>fid=%d(frid) pid=%d(fpid) mid=%d(fmid) sz=%d(sz)
496 if( srcid ){
497 @ srcid=%d(srcid)
498 }
499 }
 
500 @ </td></tr>
501 }
502 db_finalize(&q);
503 if( pGraph ){
504 graph_finish(pGraph, 0);
505
--- src/finfo.c
+++ src/finfo.c
@@ -495,10 +495,11 @@
495 @ <br>fid=%d(frid) pid=%d(fpid) mid=%d(fmid) sz=%d(sz)
496 if( srcid ){
497 @ srcid=%d(srcid)
498 }
499 }
500 tag_private_status(frid);
501 @ </td></tr>
502 }
503 db_finalize(&q);
504 if( pGraph ){
505 graph_finish(pGraph, 0);
506
+6 -1
--- src/info.c
+++ src/info.c
@@ -931,10 +931,11 @@
931931
}else{
932932
@ tags: %h(zTagList),
933933
}
934934
@ date:
935935
hyperlink_to_date(zDate, ")");
936
+ tag_private_status(rid);
936937
}
937938
db_finalize(&q);
938939
}
939940
940941
@@ -1203,19 +1204,20 @@
12031204
}else{
12041205
@ <li>File
12051206
}
12061207
objType |= OBJTYPE_CONTENT;
12071208
@ %z(href("%R/finfo?name=%T",zName))%h(zName)</a>
1209
+ tag_private_status(rid);
12081210
if( showDetail ){
12091211
@ <ul>
12101212
}
12111213
prevName = fossil_strdup(zName);
12121214
}
12131215
if( showDetail ){
12141216
@ <li>
12151217
hyperlink_to_date(zDate,"");
1216
- @ &mdash; part of check-in
1218
+ @ &mdash; part of checkin
12171219
hyperlink_to_uuid(zVers);
12181220
}else{
12191221
@ &mdash; part of checkin
12201222
hyperlink_to_uuid(zVers);
12211223
@ at
@@ -1314,10 +1316,11 @@
13141316
hyperlink_to_user(zUser,zDate," on");
13151317
hyperlink_to_date(zDate, ".");
13161318
if( pDownloadName && blob_size(pDownloadName)==0 ){
13171319
blob_appendf(pDownloadName, "%.10s.txt", zUuid);
13181320
}
1321
+ tag_private_status(rid);
13191322
cnt++;
13201323
}
13211324
db_finalize(&q);
13221325
}
13231326
db_prepare(&q,
@@ -1357,17 +1360,19 @@
13571360
hyperlink_to_date(zDate,".");
13581361
cnt++;
13591362
if( pDownloadName && blob_size(pDownloadName)==0 ){
13601363
blob_append(pDownloadName, zFilename, -1);
13611364
}
1365
+ tag_private_status(rid);
13621366
}
13631367
db_finalize(&q);
13641368
if( cnt==0 ){
13651369
@ Control artifact.
13661370
if( pDownloadName && blob_size(pDownloadName)==0 ){
13671371
blob_appendf(pDownloadName, "%.10s.txt", zUuid);
13681372
}
1373
+ tag_private_status(rid);
13691374
}
13701375
return objType;
13711376
}
13721377
13731378
13741379
--- src/info.c
+++ src/info.c
@@ -931,10 +931,11 @@
931 }else{
932 @ tags: %h(zTagList),
933 }
934 @ date:
935 hyperlink_to_date(zDate, ")");
 
936 }
937 db_finalize(&q);
938 }
939
940
@@ -1203,19 +1204,20 @@
1203 }else{
1204 @ <li>File
1205 }
1206 objType |= OBJTYPE_CONTENT;
1207 @ %z(href("%R/finfo?name=%T",zName))%h(zName)</a>
 
1208 if( showDetail ){
1209 @ <ul>
1210 }
1211 prevName = fossil_strdup(zName);
1212 }
1213 if( showDetail ){
1214 @ <li>
1215 hyperlink_to_date(zDate,"");
1216 @ &mdash; part of check-in
1217 hyperlink_to_uuid(zVers);
1218 }else{
1219 @ &mdash; part of checkin
1220 hyperlink_to_uuid(zVers);
1221 @ at
@@ -1314,10 +1316,11 @@
1314 hyperlink_to_user(zUser,zDate," on");
1315 hyperlink_to_date(zDate, ".");
1316 if( pDownloadName && blob_size(pDownloadName)==0 ){
1317 blob_appendf(pDownloadName, "%.10s.txt", zUuid);
1318 }
 
1319 cnt++;
1320 }
1321 db_finalize(&q);
1322 }
1323 db_prepare(&q,
@@ -1357,17 +1360,19 @@
1357 hyperlink_to_date(zDate,".");
1358 cnt++;
1359 if( pDownloadName && blob_size(pDownloadName)==0 ){
1360 blob_append(pDownloadName, zFilename, -1);
1361 }
 
1362 }
1363 db_finalize(&q);
1364 if( cnt==0 ){
1365 @ Control artifact.
1366 if( pDownloadName && blob_size(pDownloadName)==0 ){
1367 blob_appendf(pDownloadName, "%.10s.txt", zUuid);
1368 }
 
1369 }
1370 return objType;
1371 }
1372
1373
1374
--- src/info.c
+++ src/info.c
@@ -931,10 +931,11 @@
931 }else{
932 @ tags: %h(zTagList),
933 }
934 @ date:
935 hyperlink_to_date(zDate, ")");
936 tag_private_status(rid);
937 }
938 db_finalize(&q);
939 }
940
941
@@ -1203,19 +1204,20 @@
1204 }else{
1205 @ <li>File
1206 }
1207 objType |= OBJTYPE_CONTENT;
1208 @ %z(href("%R/finfo?name=%T",zName))%h(zName)</a>
1209 tag_private_status(rid);
1210 if( showDetail ){
1211 @ <ul>
1212 }
1213 prevName = fossil_strdup(zName);
1214 }
1215 if( showDetail ){
1216 @ <li>
1217 hyperlink_to_date(zDate,"");
1218 @ &mdash; part of checkin
1219 hyperlink_to_uuid(zVers);
1220 }else{
1221 @ &mdash; part of checkin
1222 hyperlink_to_uuid(zVers);
1223 @ at
@@ -1314,10 +1316,11 @@
1316 hyperlink_to_user(zUser,zDate," on");
1317 hyperlink_to_date(zDate, ".");
1318 if( pDownloadName && blob_size(pDownloadName)==0 ){
1319 blob_appendf(pDownloadName, "%.10s.txt", zUuid);
1320 }
1321 tag_private_status(rid);
1322 cnt++;
1323 }
1324 db_finalize(&q);
1325 }
1326 db_prepare(&q,
@@ -1357,17 +1360,19 @@
1360 hyperlink_to_date(zDate,".");
1361 cnt++;
1362 if( pDownloadName && blob_size(pDownloadName)==0 ){
1363 blob_append(pDownloadName, zFilename, -1);
1364 }
1365 tag_private_status(rid);
1366 }
1367 db_finalize(&q);
1368 if( cnt==0 ){
1369 @ Control artifact.
1370 if( pDownloadName && blob_size(pDownloadName)==0 ){
1371 blob_appendf(pDownloadName, "%.10s.txt", zUuid);
1372 }
1373 tag_private_status(rid);
1374 }
1375 return objType;
1376 }
1377
1378
1379
+27 -8
--- src/timeline.c
+++ src/timeline.c
@@ -20,10 +20,20 @@
2020
*/
2121
#include "config.h"
2222
#include <string.h>
2323
#include <time.h>
2424
#include "timeline.h"
25
+
26
+/*
27
+** Add an appropriate tag to the output if "rid" is unpublished (private)
28
+*/
29
+#define UNPUB_TAG "<em>(unpublished)</em>"
30
+void tag_private_status(int rid){
31
+ if( content_is_private(rid) ){
32
+ cgi_printf("%s", UNPUB_TAG);
33
+ }
34
+}
2535
2636
/*
2737
** Generate a hyperlink to a version.
2838
*/
2939
void hyperlink_to_uuid(const char *zUuid){
@@ -456,11 +466,11 @@
456466
blob_reset(&links);
457467
}else{
458468
@ tags: %h(zTagList))
459469
}
460470
}
461
-
471
+ tag_private_status(rid);
462472
463473
/* Generate extra hyperlinks at the end of the comment */
464474
if( xExtra ){
465475
xExtra(rid);
466476
}
@@ -471,11 +481,11 @@
471481
){
472482
int inUl = 0;
473483
if( !fchngQueryInit ){
474484
db_prepare(&fchngQuery,
475485
"SELECT (pid==0) AS isnew,"
476
- " (fid==0) AS isdel,"
486
+ " fid,"
477487
" (SELECT name FROM filename WHERE fnid=mlink.fnid) AS name,"
478488
" (SELECT uuid FROM blob WHERE rid=fid),"
479489
" (SELECT uuid FROM blob WHERE rid=pid),"
480490
" (SELECT name FROM filename WHERE fnid=mlink.pfnid) AS oldnm"
481491
" FROM mlink"
@@ -488,14 +498,16 @@
488498
}
489499
db_bind_int(&fchngQuery, ":mid", rid);
490500
while( db_step(&fchngQuery)==SQLITE_ROW ){
491501
const char *zFilename = db_column_text(&fchngQuery, 2);
492502
int isNew = db_column_int(&fchngQuery, 0);
493
- int isDel = db_column_int(&fchngQuery, 1);
503
+ int fid = db_column_int(&fchngQuery, 1);
504
+ int isDel = fid==0;
494505
const char *zOldName = db_column_text(&fchngQuery, 5);
495506
const char *zOld = db_column_text(&fchngQuery, 4);
496507
const char *zNew = db_column_text(&fchngQuery, 3);
508
+ const char *zUnpubTag = "";
497509
if( !inUl ){
498510
@ <ul class="filelist">
499511
inUl = 1;
500512
}
501513
if( (tmFlags & TIMELINE_FRENAMES)!=0 ){
@@ -502,23 +514,26 @@
502514
if( !isNew && !isDel && zOldName!=0 ){
503515
@ <li> %h(zOldName) &rarr; %h(zFilename)
504516
}
505517
continue;
506518
}
519
+ if( content_is_private(fid) ){
520
+ zUnpubTag = UNPUB_TAG;
521
+ }
507522
if( isNew ){
508
- @ <li> %h(zFilename) (new file) &nbsp;
523
+ @ <li> %h(zFilename) %s(zUnpubTag) (new file) &nbsp;
509524
@ %z(href("%R/artifact/%s",zNew))[view]</a></li>
510525
}else if( isDel ){
511526
@ <li> %h(zFilename) (deleted)</li>
512527
}else if( fossil_strcmp(zOld,zNew)==0 && zOldName!=0 ){
513
- @ <li> %h(zOldName) &rarr; %h(zFilename)
528
+ @ <li> %h(zOldName) &rarr; %h(zFilename) %s(zUnpubTag)
514529
@ %z(href("%R/artifact/%s",zNew))[view]</a></li>
515530
}else{
516531
if( zOldName!=0 ){
517
- @ <li> %h(zOldName) &rarr; %h(zFilename)
532
+ @ <li> %h(zOldName) &rarr; %h(zFilename) %s(zUnpubTag)
518533
}else{
519
- @ <li> %h(zFilename) &nbsp;
534
+ @ <li> %h(zFilename) &nbsp; %s(zUnpubTag)
520535
}
521536
@ %z(href("%R/fdiff?sbs=1&v1=%s&v2=%s",zOld,zNew))[diff]</a></li>
522537
}
523538
}
524539
db_reset(&fchngQuery);
@@ -1617,11 +1632,15 @@
16171632
sqlite3_snprintf(sizeof(zPrefix)-n, &zPrefix[n], zBrType);
16181633
n = strlen(zPrefix);
16191634
}
16201635
if( fossil_strcmp(zCurrentUuid,zId)==0 ){
16211636
sqlite3_snprintf(sizeof(zPrefix)-n, &zPrefix[n], "*CURRENT* ");
1622
- n += strlen(zPrefix);
1637
+ n += strlen(zPrefix+n);
1638
+ }
1639
+ if( content_is_private(rid) ){
1640
+ sqlite3_snprintf(sizeof(zPrefix)-n, &zPrefix[n], "*UNPUBLISHED* ");
1641
+ n += strlen(zPrefix+n);
16231642
}
16241643
zFree = mprintf("[%S] %s%s", zId, zPrefix, zCom);
16251644
/* record another X lines */
16261645
nLine += comment_print(zFree, zCom, 9, width, g.comFmtFlags);
16271646
fossil_free(zFree);
16281647
--- src/timeline.c
+++ src/timeline.c
@@ -20,10 +20,20 @@
20 */
21 #include "config.h"
22 #include <string.h>
23 #include <time.h>
24 #include "timeline.h"
 
 
 
 
 
 
 
 
 
 
25
26 /*
27 ** Generate a hyperlink to a version.
28 */
29 void hyperlink_to_uuid(const char *zUuid){
@@ -456,11 +466,11 @@
456 blob_reset(&links);
457 }else{
458 @ tags: %h(zTagList))
459 }
460 }
461
462
463 /* Generate extra hyperlinks at the end of the comment */
464 if( xExtra ){
465 xExtra(rid);
466 }
@@ -471,11 +481,11 @@
471 ){
472 int inUl = 0;
473 if( !fchngQueryInit ){
474 db_prepare(&fchngQuery,
475 "SELECT (pid==0) AS isnew,"
476 " (fid==0) AS isdel,"
477 " (SELECT name FROM filename WHERE fnid=mlink.fnid) AS name,"
478 " (SELECT uuid FROM blob WHERE rid=fid),"
479 " (SELECT uuid FROM blob WHERE rid=pid),"
480 " (SELECT name FROM filename WHERE fnid=mlink.pfnid) AS oldnm"
481 " FROM mlink"
@@ -488,14 +498,16 @@
488 }
489 db_bind_int(&fchngQuery, ":mid", rid);
490 while( db_step(&fchngQuery)==SQLITE_ROW ){
491 const char *zFilename = db_column_text(&fchngQuery, 2);
492 int isNew = db_column_int(&fchngQuery, 0);
493 int isDel = db_column_int(&fchngQuery, 1);
 
494 const char *zOldName = db_column_text(&fchngQuery, 5);
495 const char *zOld = db_column_text(&fchngQuery, 4);
496 const char *zNew = db_column_text(&fchngQuery, 3);
 
497 if( !inUl ){
498 @ <ul class="filelist">
499 inUl = 1;
500 }
501 if( (tmFlags & TIMELINE_FRENAMES)!=0 ){
@@ -502,23 +514,26 @@
502 if( !isNew && !isDel && zOldName!=0 ){
503 @ <li> %h(zOldName) &rarr; %h(zFilename)
504 }
505 continue;
506 }
 
 
 
507 if( isNew ){
508 @ <li> %h(zFilename) (new file) &nbsp;
509 @ %z(href("%R/artifact/%s",zNew))[view]</a></li>
510 }else if( isDel ){
511 @ <li> %h(zFilename) (deleted)</li>
512 }else if( fossil_strcmp(zOld,zNew)==0 && zOldName!=0 ){
513 @ <li> %h(zOldName) &rarr; %h(zFilename)
514 @ %z(href("%R/artifact/%s",zNew))[view]</a></li>
515 }else{
516 if( zOldName!=0 ){
517 @ <li> %h(zOldName) &rarr; %h(zFilename)
518 }else{
519 @ <li> %h(zFilename) &nbsp;
520 }
521 @ %z(href("%R/fdiff?sbs=1&v1=%s&v2=%s",zOld,zNew))[diff]</a></li>
522 }
523 }
524 db_reset(&fchngQuery);
@@ -1617,11 +1632,15 @@
1617 sqlite3_snprintf(sizeof(zPrefix)-n, &zPrefix[n], zBrType);
1618 n = strlen(zPrefix);
1619 }
1620 if( fossil_strcmp(zCurrentUuid,zId)==0 ){
1621 sqlite3_snprintf(sizeof(zPrefix)-n, &zPrefix[n], "*CURRENT* ");
1622 n += strlen(zPrefix);
 
 
 
 
1623 }
1624 zFree = mprintf("[%S] %s%s", zId, zPrefix, zCom);
1625 /* record another X lines */
1626 nLine += comment_print(zFree, zCom, 9, width, g.comFmtFlags);
1627 fossil_free(zFree);
1628
--- src/timeline.c
+++ src/timeline.c
@@ -20,10 +20,20 @@
20 */
21 #include "config.h"
22 #include <string.h>
23 #include <time.h>
24 #include "timeline.h"
25
26 /*
27 ** Add an appropriate tag to the output if "rid" is unpublished (private)
28 */
29 #define UNPUB_TAG "<em>(unpublished)</em>"
30 void tag_private_status(int rid){
31 if( content_is_private(rid) ){
32 cgi_printf("%s", UNPUB_TAG);
33 }
34 }
35
36 /*
37 ** Generate a hyperlink to a version.
38 */
39 void hyperlink_to_uuid(const char *zUuid){
@@ -456,11 +466,11 @@
466 blob_reset(&links);
467 }else{
468 @ tags: %h(zTagList))
469 }
470 }
471 tag_private_status(rid);
472
473 /* Generate extra hyperlinks at the end of the comment */
474 if( xExtra ){
475 xExtra(rid);
476 }
@@ -471,11 +481,11 @@
481 ){
482 int inUl = 0;
483 if( !fchngQueryInit ){
484 db_prepare(&fchngQuery,
485 "SELECT (pid==0) AS isnew,"
486 " fid,"
487 " (SELECT name FROM filename WHERE fnid=mlink.fnid) AS name,"
488 " (SELECT uuid FROM blob WHERE rid=fid),"
489 " (SELECT uuid FROM blob WHERE rid=pid),"
490 " (SELECT name FROM filename WHERE fnid=mlink.pfnid) AS oldnm"
491 " FROM mlink"
@@ -488,14 +498,16 @@
498 }
499 db_bind_int(&fchngQuery, ":mid", rid);
500 while( db_step(&fchngQuery)==SQLITE_ROW ){
501 const char *zFilename = db_column_text(&fchngQuery, 2);
502 int isNew = db_column_int(&fchngQuery, 0);
503 int fid = db_column_int(&fchngQuery, 1);
504 int isDel = fid==0;
505 const char *zOldName = db_column_text(&fchngQuery, 5);
506 const char *zOld = db_column_text(&fchngQuery, 4);
507 const char *zNew = db_column_text(&fchngQuery, 3);
508 const char *zUnpubTag = "";
509 if( !inUl ){
510 @ <ul class="filelist">
511 inUl = 1;
512 }
513 if( (tmFlags & TIMELINE_FRENAMES)!=0 ){
@@ -502,23 +514,26 @@
514 if( !isNew && !isDel && zOldName!=0 ){
515 @ <li> %h(zOldName) &rarr; %h(zFilename)
516 }
517 continue;
518 }
519 if( content_is_private(fid) ){
520 zUnpubTag = UNPUB_TAG;
521 }
522 if( isNew ){
523 @ <li> %h(zFilename) %s(zUnpubTag) (new file) &nbsp;
524 @ %z(href("%R/artifact/%s",zNew))[view]</a></li>
525 }else if( isDel ){
526 @ <li> %h(zFilename) (deleted)</li>
527 }else if( fossil_strcmp(zOld,zNew)==0 && zOldName!=0 ){
528 @ <li> %h(zOldName) &rarr; %h(zFilename) %s(zUnpubTag)
529 @ %z(href("%R/artifact/%s",zNew))[view]</a></li>
530 }else{
531 if( zOldName!=0 ){
532 @ <li> %h(zOldName) &rarr; %h(zFilename) %s(zUnpubTag)
533 }else{
534 @ <li> %h(zFilename) &nbsp; %s(zUnpubTag)
535 }
536 @ %z(href("%R/fdiff?sbs=1&v1=%s&v2=%s",zOld,zNew))[diff]</a></li>
537 }
538 }
539 db_reset(&fchngQuery);
@@ -1617,11 +1632,15 @@
1632 sqlite3_snprintf(sizeof(zPrefix)-n, &zPrefix[n], zBrType);
1633 n = strlen(zPrefix);
1634 }
1635 if( fossil_strcmp(zCurrentUuid,zId)==0 ){
1636 sqlite3_snprintf(sizeof(zPrefix)-n, &zPrefix[n], "*CURRENT* ");
1637 n += strlen(zPrefix+n);
1638 }
1639 if( content_is_private(rid) ){
1640 sqlite3_snprintf(sizeof(zPrefix)-n, &zPrefix[n], "*UNPUBLISHED* ");
1641 n += strlen(zPrefix+n);
1642 }
1643 zFree = mprintf("[%S] %s%s", zId, zPrefix, zCom);
1644 /* record another X lines */
1645 nLine += comment_print(zFree, zCom, 9, width, g.comFmtFlags);
1646 fossil_free(zFree);
1647

Keyboard Shortcuts

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