222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
|
if( !isPrivate ) autosync_loop(SYNC_PUSH, 0, "branch");
}
/*
** Create a TEMP table named "tmp_brlist" with 7 columns:
**
** name Name of the branch
** mtime Time of last checkin on this branch
** isclosed True if the branch is closed
** mergeto Another branch this branch was merged into
** nckin Number of checkins on this branch
** ckin Hash of the last checkin on this branch
** isprivate True if the branch is private
** bgclr Background color for this branch
*/
static const char createBrlistQuery[] =
@ CREATE TEMP TABLE IF NOT EXISTS tmp_brlist AS
@ SELECT
@ tagxref.value AS name,
|
|
|
|
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
|
if( !isPrivate ) autosync_loop(SYNC_PUSH, 0, "branch");
}
/*
** Create a TEMP table named "tmp_brlist" with 7 columns:
**
** name Name of the branch
** mtime Time of last check-in on this branch
** isclosed True if the branch is closed
** mergeto Another branch this branch was merged into
** nckin Number of checkins on this branch
** ckin Hash of the last check-in on this branch
** isprivate True if the branch is private
** bgclr Background color for this branch
*/
static const char createBrlistQuery[] =
@ CREATE TEMP TABLE IF NOT EXISTS tmp_brlist AS
@ SELECT
@ tagxref.value AS name,
|
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
|
blob_reset(&manifest);
db_end_transaction(doRollback);
return 0;
}
/*
** Internal helper for branch_cmd_close() and friends. zName is a
** symbolic checkin name. Returns the blob.rid of the checkin or fails
** fatally if the name does not resolve unambiguously. If zUuid is
** not NULL, *zUuid is set to the resolved blob.uuid and must be freed
** by the caller via fossil_free().
*/
static int branch_resolve_name(char const *zName, char **zUuid){
const int rid = name_to_uuid2(zName, "ci", zUuid);
if(0==rid){
fossil_fatal("Cannot resolve name: %s", zName);
}else if(rid<0){
fossil_fatal("Ambiguous name: %s", zName);
}
return rid;
}
/*
** Implementation of (branch hide/unhide) subcommands. nStartAtArg is
** the g.argv index to start reading branch/checkin names. fHide is
** true for hiding, false for unhiding. Fails fatally on error.
*/
static void branch_cmd_hide(int nStartAtArg, int fHide){
int argPos = nStartAtArg; /* g.argv pos with first branch/ci name */
char * zUuid = 0; /* Resolved branch UUID. */
const int fVerbose = find_option("verbose","v",0)!=0;
const int fDryRun = find_option("dry-run","n",0)!=0;
const char *zDateOvrd = find_option("date-override",0,1);
const char *zUserOvrd = find_option("user-override",0,1);
verify_all_options();
db_begin_transaction();
for( ; argPos < g.argc; fossil_free(zUuid), ++argPos ){
const char * zName = g.argv[argPos];
const int rid = branch_resolve_name(zName, &zUuid);
const int isHidden = rid_has_tag(rid, TAG_HIDDEN);
/* Potential TODO: check for existing 'hidden' flag and skip this
** entry if it already has (if fHide) or does not have (if !fHide)
** that tag. FWIW, /ci_edit does not do so. */
if(fHide && isHidden){
fossil_warning("Skipping hidden checkin %s: %s.", zName, zUuid);
continue;
}else if(!fHide && !isHidden){
fossil_warning("Skipping non-hidden checkin %s: %s.", zName, zUuid);
continue;
}
branch_cmd_tag_add(rid, fHide ? "*hidden" : "-hidden");
if(fVerbose!=0){
fossil_print("%s checkin [%s] %s\n",
fHide ? "Hiding" : "Unhiding",
zName, zUuid);
}
}
branch_cmd_tag_finalize(fDryRun, fVerbose, zDateOvrd, zUserOvrd);
}
/*
** Implementation of (branch close|reopen) subcommands. nStartAtArg is
** the g.argv index to start reading branch/checkin names. The given
** checkins are closed if fClose is true, else their "closed" tag (if
** any) is cancelled. Fails fatally on error.
*/
static void branch_cmd_close(int nStartAtArg, int fClose){
int argPos = nStartAtArg; /* g.argv pos with first branch name */
char * zUuid = 0; /* Resolved branch UUID. */
const int fVerbose = find_option("verbose","v",0)!=0;
|
|
|
|
|
|
|
|
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
|
blob_reset(&manifest);
db_end_transaction(doRollback);
return 0;
}
/*
** Internal helper for branch_cmd_close() and friends. zName is a
** symbolic check-in name. Returns the blob.rid of the check-in or fails
** fatally if the name does not resolve unambiguously. If zUuid is
** not NULL, *zUuid is set to the resolved blob.uuid and must be freed
** by the caller via fossil_free().
*/
static int branch_resolve_name(char const *zName, char **zUuid){
const int rid = name_to_uuid2(zName, "ci", zUuid);
if(0==rid){
fossil_fatal("Cannot resolve name: %s", zName);
}else if(rid<0){
fossil_fatal("Ambiguous name: %s", zName);
}
return rid;
}
/*
** Implementation of (branch hide/unhide) subcommands. nStartAtArg is
** the g.argv index to start reading branch/check-in names. fHide is
** true for hiding, false for unhiding. Fails fatally on error.
*/
static void branch_cmd_hide(int nStartAtArg, int fHide){
int argPos = nStartAtArg; /* g.argv pos with first branch/ci name */
char * zUuid = 0; /* Resolved branch UUID. */
const int fVerbose = find_option("verbose","v",0)!=0;
const int fDryRun = find_option("dry-run","n",0)!=0;
const char *zDateOvrd = find_option("date-override",0,1);
const char *zUserOvrd = find_option("user-override",0,1);
verify_all_options();
db_begin_transaction();
for( ; argPos < g.argc; fossil_free(zUuid), ++argPos ){
const char * zName = g.argv[argPos];
const int rid = branch_resolve_name(zName, &zUuid);
const int isHidden = rid_has_tag(rid, TAG_HIDDEN);
/* Potential TODO: check for existing 'hidden' flag and skip this
** entry if it already has (if fHide) or does not have (if !fHide)
** that tag. FWIW, /ci_edit does not do so. */
if(fHide && isHidden){
fossil_warning("Skipping hidden check-in %s: %s.", zName, zUuid);
continue;
}else if(!fHide && !isHidden){
fossil_warning("Skipping non-hidden check-in %s: %s.", zName, zUuid);
continue;
}
branch_cmd_tag_add(rid, fHide ? "*hidden" : "-hidden");
if(fVerbose!=0){
fossil_print("%s check-in [%s] %s\n",
fHide ? "Hiding" : "Unhiding",
zName, zUuid);
}
}
branch_cmd_tag_finalize(fDryRun, fVerbose, zDateOvrd, zUserOvrd);
}
/*
** Implementation of (branch close|reopen) subcommands. nStartAtArg is
** the g.argv index to start reading branch/check-in names. The given
** checkins are closed if fClose is true, else their "closed" tag (if
** any) is cancelled. Fails fatally on error.
*/
static void branch_cmd_close(int nStartAtArg, int fClose){
int argPos = nStartAtArg; /* g.argv pos with first branch name */
char * zUuid = 0; /* Resolved branch UUID. */
const int fVerbose = find_option("verbose","v",0)!=0;
|
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
|
int n;
const char *zCmd = "list";
db_find_and_open_repository(0, 0);
if( g.argc>=3 ) zCmd = g.argv[2];
n = strlen(zCmd);
if( strncmp(zCmd,"current",n)==0 ){
if( !g.localOpen ){
fossil_fatal("not within an open checkout");
}else{
int vid = db_lget_int("checkout", 0);
char *zCurrent = db_text(0, "SELECT value FROM tagxref"
" WHERE rid=%d AND tagid=%d", vid, TAG_BRANCH);
fossil_print("%s\n", zCurrent);
fossil_free(zCurrent);
}
|
|
|
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
|
int n;
const char *zCmd = "list";
db_find_and_open_repository(0, 0);
if( g.argc>=3 ) zCmd = g.argv[2];
n = strlen(zCmd);
if( strncmp(zCmd,"current",n)==0 ){
if( !g.localOpen ){
fossil_fatal("not within an open check-out");
}else{
int vid = db_lget_int("checkout", 0);
char *zCurrent = db_text(0, "SELECT value FROM tagxref"
" WHERE rid=%d AND tagid=%d", vid, TAG_BRANCH);
fossil_print("%s\n", zCurrent);
fossil_free(zCurrent);
}
|