Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | If the date of a check-in has been changed by a tag, then show that fact on the "info" page for the check-in. <i>Requires a rebuild</i>. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
576f6db2a84d0e6e7cd045460710c172 |
| User & Date: | drh 2010-11-24 23:45:32.000 |
Context
|
2010-11-25
| ||
| 00:17 | Add a new link to the check-in "info" page that goes to a timeline showing just the immediate parents and children of a check-in. Ticket [746949c9318554c137f5]. ... (check-in: 8c04a873c8 user: drh tags: trunk) | |
|
2010-11-24
| ||
| 23:45 | If the date of a check-in has been changed by a tag, then show that fact on the "info" page for the check-in. <i>Requires a rebuild</i>. ... (check-in: 576f6db2a8 user: drh tags: trunk) | |
| 21:32 | Tag the manifest of every "private" checkin with the "private" tag. After the "reconstruct" command, add all private checkins to the private table. Ticket [e29ea5912afe1e97]. ... (check-in: 3b2d67d604 user: drh tags: trunk) | |
Changes
Changes to src/info.c.
| ︙ | ︙ | |||
214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 |
if( tagtype==2 ){
if( zOrigUuid && zOrigUuid[0] ){
@ inherited from
hyperlink_to_uuid(zOrigUuid);
}else{
@ propagates to descendants
}
if( zValue && strcmp(zTagname,"branch")==0 ){
@
@ <a href="%s(g.zBaseURL)/timeline?r=%T(zValue)">branch timeline</a>
}
}
if( zSrcUuid && zSrcUuid[0] ){
if( tagtype==0 ){
@ by
}else{
@ added by
}
| > > | 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 |
if( tagtype==2 ){
if( zOrigUuid && zOrigUuid[0] ){
@ inherited from
hyperlink_to_uuid(zOrigUuid);
}else{
@ propagates to descendants
}
#if 0
if( zValue && strcmp(zTagname,"branch")==0 ){
@
@ <a href="%s(g.zBaseURL)/timeline?r=%T(zValue)">branch timeline</a>
}
#endif
}
if( zSrcUuid && zSrcUuid[0] ){
if( tagtype==0 ){
@ by
}else{
@ added by
}
|
| ︙ | ︙ | |||
347 348 349 350 351 352 353 |
style_header("Check-in Information Error");
@ No such object: %h(g.argv[2])
style_footer();
return;
}
isLeaf = !db_exists("SELECT 1 FROM plink WHERE pid=%d", rid);
db_prepare(&q,
| | > > > > > > > | 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 |
style_header("Check-in Information Error");
@ No such object: %h(g.argv[2])
style_footer();
return;
}
isLeaf = !db_exists("SELECT 1 FROM plink WHERE pid=%d", rid);
db_prepare(&q,
"SELECT uuid, datetime(mtime, 'localtime'), user, comment,"
" datetime(omtime, 'localtime')"
" FROM blob, event"
" WHERE blob.rid=%d"
" AND event.objid=%d",
rid, rid
);
if( db_step(&q)==SQLITE_ROW ){
const char *zUuid = db_column_text(&q, 0);
char *zTitle = mprintf("Check-in [%.10s]", zUuid);
char *zEUser, *zEComment;
const char *zUser;
const char *zComment;
const char *zDate;
const char *zOrigDate;
style_header(zTitle);
login_anonymous_available();
free(zTitle);
zEUser = db_text(0,
"SELECT value FROM tagxref WHERE tagid=%d AND rid=%d",
TAG_USER, rid);
zEComment = db_text(0,
"SELECT value FROM tagxref WHERE tagid=%d AND rid=%d",
TAG_COMMENT, rid);
zUser = db_column_text(&q, 2);
zComment = db_column_text(&q, 3);
zDate = db_column_text(&q,1);
zOrigDate = db_column_text(&q, 4);
@ <div class="section">Overview</div>
@ <table class="label-value">
@ <tr><th>SHA1 Hash:</th><td>%s(zUuid)
if( g.okSetup ){
@ (Record ID: %d(rid))
}
@ </td></tr>
@ <tr><th>Date:</th><td>
hyperlink_to_date(zDate, "</td></tr>");
if( zOrigDate ){
@ <tr><th>Original Date:</th><td>
hyperlink_to_date(zOrigDate, "</td></tr>");
}
if( zEUser ){
@ <tr><th>Edited User:</th><td>
hyperlink_to_user(zEUser,zDate,"</td></tr>");
@ <tr><th>Original User:</th><td>
hyperlink_to_user(zUser,zDate,"</td></tr>");
}else{
@ <tr><th>User:</th><td>
|
| ︙ | ︙ |
Changes to src/schema.c.
| ︙ | ︙ | |||
219 220 221 222 223 224 225 | @ UNIQUE(pid, cid) @ ); @ CREATE INDEX plink_i2 ON plink(cid,pid); @ @ -- Events used to generate a timeline @ -- @ CREATE TABLE event( | | | > | 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 | @ UNIQUE(pid, cid) @ ); @ CREATE INDEX plink_i2 ON plink(cid,pid); @ @ -- Events used to generate a timeline @ -- @ CREATE TABLE event( @ type TEXT, -- Type of event: 'ci', 'w', 'e', 't' @ mtime DATETIME, -- Date and time when the event occurs @ objid INTEGER PRIMARY KEY, -- Associated record ID @ tagid INTEGER, -- Associated ticket or wiki name tag @ uid INTEGER REFERENCES user, -- User who caused the event @ bgcolor TEXT, -- Color set by 'bgcolor' property @ euser TEXT, -- User set by 'user' property @ user TEXT, -- Name of the user @ ecomment TEXT, -- Comment set by 'comment' property @ comment TEXT, -- Comment describing the event @ brief TEXT, -- Short comment when tagid already seen @ omtime DATETIME -- Original unchanged date+time, or NULL @ ); @ CREATE INDEX event_i1 ON event(mtime); @ @ -- A record of phantoms. A phantom is a record for which we know the @ -- UUID but we do not (yet) know the file content. @ -- @ CREATE TABLE phantom( |
| ︙ | ︙ |
Changes to src/tag.c.
| ︙ | ︙ | |||
199 200 201 202 203 204 205 |
if( tagid==TAG_COMMENT ){
char *zCopy = mprintf("%s", zValue);
wiki_extract_links(zCopy, rid, 0, mtime, 1, WIKI_INLINE);
free(zCopy);
}
}
if( tagid==TAG_DATE ){
| | > > > | 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 |
if( tagid==TAG_COMMENT ){
char *zCopy = mprintf("%s", zValue);
wiki_extract_links(zCopy, rid, 0, mtime, 1, WIKI_INLINE);
free(zCopy);
}
}
if( tagid==TAG_DATE ){
db_multi_exec("UPDATE event "
" SET mtime=julianday(%Q),"
" omtime=coalesce(omtime,mtime)"
" WHERE objid=%d",
zValue, rid);
}
if( tagtype==0 || tagtype==2 ){
tag_propagate(rid, tagid, tagtype, rid, zValue, mtime);
}
return tagid;
}
|
| ︙ | ︙ |