@@ -271,17 +271,24 @@
271 271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
272 272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
273 273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
274 274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
275 275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Show the context graph (immediate parents and children) for
276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** check-in rid and rid2
276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** check-in rid and rid2. rid2 might be zero, in which case only
277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** show the context for rid1.
277 278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- void render_checkin_context(int rid, int rid2, int parentsOnly, int mFlags){
279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void render_checkin_context(
280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rid, int rid2, /* One or two checkins for which to show context */
281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int mRCCFlags, /* Flags. 1: parents only, 2: shadow-select rid */
282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int mFlags /* Graph flags */
283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
279 284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob sql;
280 285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Stmt q;
281 286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rx[2];
282 287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i, n;
288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ TimelineXtra xtra;
289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
283 290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rx[0] = rid;
284 291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rx[1] = rid2;
285 292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n = rid2 ? 2 : 1;
286 293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&sql);
287 294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_append(&sql, timeline_query_for_www(), -1);
@@ -295,11 +302,11 @@
295 302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"INSERT OR IGNORE INTO ok VALUES(%d);"
296 303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"INSERT OR IGNORE INTO ok SELECT pid FROM plink WHERE cid=%d;",
297 304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rx[i], rx[i]
298 305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
299 306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !parentsOnly ){
307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (mRCCFlags & 0x01)==0 ){
301 308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<n; i++){
302 309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec(
303 310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"INSERT OR IGNORE INTO ok SELECT cid FROM plink WHERE pid=%d;", rx[i]
304 311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
305 312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db_table_exists("repository","cherrypick") ){
@@ -313,18 +320,20 @@
313 320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
314 321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
315 322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
316 323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_append_sql(&sql, " AND event.objid IN ok ORDER BY mtime DESC");
317 324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_prepare(&q, "%s", blob_sql_text(&sql));
318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- www_print_timeline(&q,
319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mFlags
320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- |TIMELINE_GRAPH
321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- |TIMELINE_FILLGAPS
322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- |TIMELINE_NOSCROLL
323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- |TIMELINE_XMERGE
324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- |TIMELINE_CHPICK,
325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0, 0, 0, rid, rid2, 0);
325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(&xtra, 0, sizeof(xtra));
326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( mRCCFlags & 0x02 ){
327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ xtra.currentRid = rid;
328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ xtra.selectedRid = rid;
330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ xtra.secondRid = rid2;
331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mFlags |= TIMELINE_GRAPH|TIMELINE_FILLGAPS|TIMELINE_NOSCROLL|
333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ TIMELINE_XMERGE|TIMELINE_CHPICK;
334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ www_print_timeline(&q, mFlags, &xtra);
326 335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
327 336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&sql);
328 337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
329 338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
330 339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -508,10 +517,11 @@
508 517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rid;
509 518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Stmt q;
510 519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int cnt = 0;
511 520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob sql;
512 521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char const *zType;
522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ TimelineXtra xtra;
513 523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
514 524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
login_check_credentials();
515 525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !g.perm.Read ){ login_needed(g.anon.Read); return; }
516 526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rid = name_to_rid_www("name");
517 527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rid==0 ){
@@ -607,12 +617,14 @@
607 617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
608 618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&sql);
609 619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_append(&sql, timeline_query_for_www(), -1);
610 620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_append_sql(&sql, " AND event.objid IN ok ORDER BY mtime DESC");
611 621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_prepare(&q, "%s", blob_sql_text(&sql));
622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ memset(&xtra, 0, sizeof(xtra));
623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ xtra.selectedRid = rid;
612 624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
www_print_timeline(&q, TIMELINE_DISJOINT|TIMELINE_GRAPH|TIMELINE_NOSCROLL,
613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0, 0, 0, rid, 0, 0);
625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ &xtra);
614 626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
615 627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_finish_page();
616 628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
617 629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
618 630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
@@ -876,11 +888,11 @@
876 888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zHostname ){
877 889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_header("Checkout Status: %h on %h", zCwd, zHostname);
878 890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
879 891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_header("Checkout Status: %h", zCwd);
880 892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- render_checkin_context(vid, 0, 0, 0);
893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ render_checkin_context(vid, 0, 2, 0);
882 894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <hr>
883 895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zExBase = P("exbase");
884 896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zExBase && zExBase[0] ){
885 897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zPath = decode16_dup(zExBase);
886 898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zCBase = file_canonical_name_dup(zPath?zPath:zExBase);
@@ -1183,11 +1195,11 @@
1183 1195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
wiki_render_associated("checkin", zUuid, 0);
1184 1196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1185 1197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
render_backlink_graph(zUuid,
1186 1198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"<div class=\"section accordion\">References</div>\n");
1187 1199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <div class="section accordion">Context</div><div class="accordion_panel">
1188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- render_checkin_context(rid, 0, 0, 0);
1200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ render_checkin_context(rid, 0, 2, 0);
1189 1201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </div><div class="section accordion" id="changes_section">Changes</div>
1190 1202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <div class="accordion_panel">
1191 1203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <div class="sectionmenu info-changes-menu">
1192 1204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* ^^^ .info-changes-menu is used by diff scroll sync */
1193 1205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pCfg = construct_diff_flags(diffType, &DCfg);
@@ -3453,74 +3465,93 @@
3453 3465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( fossil_isspace(zA[0]) ) zA++;
3454 3466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return zA[0]==0 && zB[0]==0;
3455 3467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3456 3468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3457 3469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
3458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The following methods operate on the newtags temporary table
3459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** that is used to collect various changes to be added to a control
3460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** artifact for a check-in edit.
3470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *****************************************************************************
3471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The following methods operate on the "newtags" temporary table. This
3472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** table collects changes for a control artifact that will implement an
3473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** edit to a check-in.
3474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Initialize the newtags table
3461 3476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
3462 3477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void init_newtags(void){
3463 3478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec("CREATE TEMP TABLE newtags(tag UNIQUE, prefix, value)");
3464 3479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3465 3480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Add a new changes to the newtags table */
3466 3482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void change_special(
3467 3483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zName, /* Name of the special tag */
3468 3484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zOp, /* Operation prefix (e.g. +,-,*) */
3469 3485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zValue /* Value of the tag */
3470 3486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
3471 3487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec("REPLACE INTO newtags VALUES(%Q,'%q',%Q)", zName, zOp, zValue);
3472 3488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3473 3489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Change a symbolic tag */
3474 3491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void change_sym_tag(const char *zTag, const char *zOp){
3475 3492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec("REPLACE INTO newtags VALUES('sym-%q',%Q,NULL)", zTag, zOp);
3476 3493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3477 3494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Cancel a tag */
3478 3496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void cancel_special(const char *zTag){
3479 3497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
change_special(zTag,"-",0);
3480 3498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3481 3499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Add a background color tag. This will be propagating tag
3501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** if fPropagateColor is true. */
3482 3502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void add_color(const char *zNewColor, int fPropagateColor){
3483 3503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
change_special("bgcolor",fPropagateColor ? "*" : "+", zNewColor);
3484 3504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3485 3505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Cancel a background color tag */
3486 3507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void cancel_color(void){
3487 3508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
change_special("bgcolor","-",0);
3488 3509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3489 3510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Add a comment-change tag */
3490 3512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void add_comment(const char *zNewComment){
3491 3513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
change_special("comment","+",zNewComment);
3492 3514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3493 3515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Add a date-change tag */
3494 3517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void add_date(const char *zNewDate){
3495 3518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
change_special("date","+",zNewDate);
3496 3519 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3497 3520 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3521 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Add a change-user tag */
3498 3522 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void add_user(const char *zNewUser){
3499 3523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
change_special("user","+",zNewUser);
3500 3524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3501 3525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Add a generic symbolic tag (one that has no value) */
3502 3527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void add_tag(const char *zNewTag){
3503 3528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
change_sym_tag(zNewTag,"+");
3504 3529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3505 3530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Cancel an existing symbolic tag associated with check-in rid */
3506 3532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void cancel_tag(int rid, const char *zCancelTag){
3507 3533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( db_exists("SELECT 1 FROM tagxref, tag"
3508 3534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" WHERE tagxref.rid=%d AND tagtype>0"
3509 3535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" AND tagxref.tagid=tag.tagid AND tagname='sym-%q'",
3510 3536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rid, zCancelTag)
3511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ) change_sym_tag(zCancelTag,"-");
3537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
3538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ change_sym_tag(zCancelTag,"-");
3539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3512 3540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3513 3541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Add a hidden tag that propagates to all ancestors */
3514 3543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void hide_branch(void){
3515 3544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
change_special("hidden","*",0);
3516 3545 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3517 3546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Close the branch */
3518 3548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void close_leaf(int rid){
3519 3549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
change_special("closed",is_a_leaf(rid)?"+":"*",0);
3520 3550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3521 3551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Move the check-in to a different branch */
3522 3553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void change_branch(int rid, const char *zNewBranch){
3523 3554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec(
3524 3555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"REPLACE INTO newtags "
3525 3556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" SELECT tagname, '-', NULL FROM tagxref, tag"
3526 3557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" WHERE tagxref.rid=%d AND tagtype==2"
@@ -3531,19 +3562,31 @@
3531 3562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
change_special("branch","*",zNewBranch);
3532 3563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
change_sym_tag(zNewBranch,"*");
3533 3564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3534 3565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3535 3566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
3536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** The apply_newtags method is called after all newtags have been added
3537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** and the control artifact is completed and then written to the DB.
3567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Construct a control artifact.
3568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Preconditions:
3570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (1) "ctrl" contains the beginning of a control artifact with
3572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** just the D-card showing the timestamp on the control artifact
3573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** itself.
3574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (2) The newtags temporary table has been constructed.
3576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** (3) Zero or more methods may have been called to populate the
3578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** newtags table. Or the newtags table might be empty.
3579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
3580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Construct the complete control artifact. Or, if there are not
3581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** changes, just zero out the ctrl blob.
3538 3582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
3539 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static void apply_newtags(
3540 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Blob *ctrl,
3541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int rid,
3542 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zUuid,
3543 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zUserOvrd, /* The user name on the control artifact */
3544 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int fDryRun /* Print control artifact, but make no changes */
3583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void construct_newtags_artifact(
3584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob *ctrl, /* The control artifact text */
3585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rid, /* rid of the check-in that the artifact applies to */
3586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zUuid, /* UUID of the check-in to which the artifact applies*/
3587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zUserOvrd /* The user name on the control artifact */
3545 3588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
3546 3589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Stmt q;
3547 3590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nChng = 0;
3548 3591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3549 3592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_prepare(&q, "SELECT tag, prefix, value FROM newtags"
@@ -3559,33 +3602,46 @@
3559 3602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(ctrl, "T %s%F %s\n", zPrefix, zTag, zUuid);
3560 3603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3561 3604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3562 3605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
3563 3606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nChng>0 ){
3564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int nrid;
3565 3607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob cksum;
3566 3608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zUserOvrd && zUserOvrd[0] ){
3567 3609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(ctrl, "U %F\n", zUserOvrd);
3568 3610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
3569 3611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(ctrl, "U %F\n", login_name());
3570 3612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3571 3613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
md5sum_blob(ctrl, &cksum);
3572 3614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(ctrl, "Z %b\n", &cksum);
3573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( fDryRun ){
3574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( g.isHTTP==0 ); /* Only print control artifact in console mode. */
3575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fossil_print("%s", blob_str(ctrl));
3576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_reset(ctrl);
3577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
3578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_begin_transaction();
3579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- g.markPrivate = content_is_private(rid);
3580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nrid = content_put(ctrl);
3581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- manifest_crosslink(nrid, ctrl, MC_PERMIT_HOOKS);
3582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_end_transaction(0);
3583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
3584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- assert( blob_is_reset(ctrl) );
3615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&cksum);
3616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
3617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(ctrl);
3618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
3622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Return true if the artifact is complete. We assume that any non-empty
3623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** artifact is complete.
3624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
3625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static int artifact_is_complete(Blob *ctrl){
3626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return blob_size(ctrl)>0;
3627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
3629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
3630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Apply a control artifact to the repository database. Except, if the
3631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** artifact is empty, this routine is a no-op.
3632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
3633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static void publish_newtags_artifact(Blob *ctrl, int rid){
3634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( artifact_is_complete(ctrl) ){
3635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nrid;
3636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ g.markPrivate = content_is_private(rid);
3637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nrid = content_put(ctrl);
3638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ manifest_crosslink(nrid, ctrl, MC_PERMIT_HOOKS);
3585 3639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3586 3640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* End of the newtags subsystem
3642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ******************************************************************************/
3587 3643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3588 3644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
3589 3645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This method checks that the date can be parsed.
3590 3646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Returns 1 if datetime() can validate, 0 otherwise.
3591 3647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
@@ -3644,14 +3700,17 @@
3644 3700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int fPropagateColor; /* True if color propagates before edit */
3645 3701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int fNewPropagateColor; /* True if color propagates after edit */
3646 3702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int fHasHidden = 0; /* True if hidden tag already set */
3647 3703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int fHasClosed = 0; /* True if closed tag already set */
3648 3704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zChngTime = 0; /* Value of chngtime= query param, if any */
3705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int bApply = P("apply")!=0;
3706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int bPreview = P("preview")!=0;
3649 3707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zUuid;
3650 3708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob comment;
3651 3709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zBranchName = 0;
3652 3710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Stmt q;
3711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob ctrl; /* The generated control artifact */
3653 3712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3654 3713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
login_check_credentials();
3655 3714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !g.perm.Write ){ login_needed(g.anon.Write); return; }
3656 3715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rid = name_to_typed_rid(P("r"), "ci");
3657 3716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid);
@@ -3684,16 +3743,14 @@
3684 3743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zNewBrFlag = P("newbr") ? " checked" : "";
3685 3744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zNewBranch = PDT("brname","");
3686 3745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zBranchName = branch_of_rid(rid);
3687 3746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zCloseFlag = P("close") ? " checked" : "";
3688 3747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zHideFlag = P("hide") ? " checked" : "";
3689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( P("apply") && cgi_csrf_safe(2) ){
3690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Blob ctrl;
3691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- char *zNow;
3692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
3693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_zero(&ctrl);
3694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zNow = date_in_standard_format(zChngTime ? zChngTime : "now");
3748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_zero(&ctrl);
3749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bApply && !cgi_csrf_safe(2) ) bApply = 0;
3750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bApply || bPreview ){
3751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zNow = date_in_standard_format(zChngTime ? zChngTime : "now");
3695 3752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(&ctrl, "D %s\n", zNow);
3696 3753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
init_newtags();
3697 3754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zNewColorFlag[0]
3698 3755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& zNewColor[0]
3699 3756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (fPropagateColor!=fNewPropagateColor
@@ -3719,69 +3776,41 @@
3719 3776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
3720 3777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zHideFlag[0] ) hide_branch();
3721 3778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zCloseFlag[0] ) close_leaf(rid);
3722 3779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zNewTagFlag[0] && zNewTag[0] ) add_tag(zNewTag);
3723 3780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zNewBrFlag[0] && zNewBranch[0] ) change_branch(rid,zNewBranch);
3724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- apply_newtags(&ctrl, rid, zUuid, 0, 0);
3725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cgi_redirectf("%R/ci/%S", zUuid);
3781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ construct_newtags_artifact(&ctrl, rid, zUuid, 0);
3782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bApply ){
3783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( artifact_is_complete(&ctrl) ){
3784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_begin_transaction();
3785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ publish_newtags_artifact(&ctrl, rid);
3786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_end_transaction(0);
3787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&ctrl);
3788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_redirectf("%R/ci/%S", zUuid);
3790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3726 3791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3727 3792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&comment);
3728 3793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_append(&comment, zNewComment, -1);
3729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zUuid[10] = 0;
3730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- style_header("Edit Check-in [%s]", zUuid);
3731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( P("preview") ){
3732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Blob suffix;
3733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- int nTag = 0;
3734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zDplyBr; /* Branch name used to determine BG color */
3735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zMainBranch = db_main_branch();
3736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zNewBrFlag[0] && zNewBranch[0] ){
3737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zDplyBr = zNewBranch;
3738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
3739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zDplyBr = zBranchName;
3740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
3741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <b>Preview:</b>
3742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <blockquote>
3743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <table border=0>
3744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zNewColorFlag[0] && zNewColor && zNewColor[0] ){
3745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <tr><td style="background-color:%h(reasonable_bg_color(zNewColor,0));">
3746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( zColor[0] ){
3747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <tr><td style="background-color:%h(reasonable_bg_color(zColor,0));">
3748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else if( zDplyBr && fossil_strcmp(zDplyBr, zMainBranch)!=0 ){
3749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <tr><td style="background-color:%h(hash_color(zDplyBr));">
3750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
3751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <tr><td>
3752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
3753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ %!W(blob_str(&comment))
3754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_zero(&suffix);
3755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(&suffix, "(user: %h", zNewUser);
3756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_prepare(&q, "SELECT substr(tagname,5) FROM tagxref, tag"
3757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " WHERE tagname GLOB 'sym-*' AND tagxref.rid=%d"
3758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " AND tagtype>1 AND tag.tagid=tagxref.tagid",
3759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rid);
3760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- while( db_step(&q)==SQLITE_ROW ){
3761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- const char *zTag = db_column_text(&q, 0);
3762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( nTag==0 ){
3763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(&suffix, ", tags: %h", zTag);
3764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
3765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(&suffix, ", %h", zTag);
3766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
3767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nTag++;
3768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
3769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_finalize(&q);
3770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_appendf(&suffix, ")");
3771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ %s(blob_str(&suffix))
3772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ </td></tr></table>
3773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zChngTime ){
3774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <p>The timestamp on the tag used to make the changes above
3775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ will be overridden as: %s(date_in_standard_format(zChngTime))</p>
3776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
3777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ </blockquote>
3778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <hr>
3779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_reset(&suffix);
3780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
3781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <p>Make changes to attributes of check-in
3782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ [%z(href("%R/ci/%!S",zUuid))%s(zUuid)</a>]:</p>
3794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_header("Edit Check-in %S", zUuid);
3795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <div class="section accordion">Original Context Around \
3796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ Check-in %S(zUuid) on %s(zDate)</div>
3797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <div class="accordion_panel">
3798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ render_checkin_context(rid, 0, 2, 0);
3799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ </div>
3800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bPreview ){
3801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <div class="section accordion">After The Proposed Changes</div>
3802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <div class="accordion_panel">
3803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_begin_transaction();
3804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ publish_newtags_artifact(&ctrl, rid);
3805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ render_checkin_context(rid, 0, 2, 0);
3806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_end_transaction(1);
3807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ </div>
3808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
3809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <div class="section accordion">Proposed Changes For \
3810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ Check-In %S(zUuid):</div>
3811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <div class="accordion_panel">
3783 3812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
form_begin(0, "%R/ci_edit");
3784 3813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <div><input type="hidden" name="r" value="%s(zUuid)">
3785 3814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <table border="0" cellspacing="10">
3786 3815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3787 3816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <tr><th align="right" valign="top">User:</th>
@@ -3919,10 +3948,11 @@
3919 3948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( P("preview") ){
3920 3949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <input type="submit" name="apply" value="Apply Changes">
3921 3950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3922 3951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </td></tr>
3923 3952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </table>
3953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ login_insert_csrf_secret();
3924 3954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </div></form>
3925 3955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
builtin_request_js("ci_edit.js");
3926 3956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_finish_page();
3927 3957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3928 3958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -4194,13 +4224,19 @@
4194 4224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_free((void *)pzCancelTags);
4195 4225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
4196 4226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fHide && !fHasHidden ) hide_branch();
4197 4227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( fClose && !fHasClosed ) close_leaf(rid);
4198 4228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zNewBranch && zNewBranch[0] ) change_branch(rid,zNewBranch);
4199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- apply_newtags(&ctrl, rid, zUuid, zUserOvrd, fDryRun);
4200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( fDryRun==0 ){
4229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ construct_newtags_artifact(&ctrl, rid, zUuid, zUserOvrd);
4230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( fDryRun ){
4231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_print("%s", blob_str(&ctrl));
4232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_reset(&ctrl);
4233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
4234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_begin_transaction();
4235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ publish_newtags_artifact(&ctrl, rid);
4201 4236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
show_common_info(rid, "hash:", 1, 0);
4237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_end_transaction(0);
4202 4238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
4203 4239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.localOpen ){
4204 4240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
manifest_to_disk(rid);
4205 4241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
4206 4242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
4207 4243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!