Fossil SCM
branch hide/unhide subcommands now skip over checkins which have resp. don't have the hidden tag.
Commit
768f30ffb7b22674b02ad020bc12ed38b549b102ffc4429a8206f75f9c5336a4
Parent
05b42e6aa680bf4…
2 files changed
+8
+14
+8
| --- src/branch.c | ||
| +++ src/branch.c | ||
| @@ -480,13 +480,21 @@ | ||
| 480 | 480 | verify_all_options(); |
| 481 | 481 | db_begin_transaction(); |
| 482 | 482 | for( ; argPos < g.argc; fossil_free(zUuid), ++argPos ){ |
| 483 | 483 | const char * zName = g.argv[argPos]; |
| 484 | 484 | const int rid = branch_resolve_name(zName, &zUuid); |
| 485 | + const int isHidden = tag_has(rid, TAG_HIDDEN); | |
| 485 | 486 | /* Potential TODO: check for existing 'hidden' flag and skip this |
| 486 | 487 | ** entry if it already has (if fHide) or does not have (if !fHide) |
| 487 | 488 | ** that tag. FWIW, /ci_edit does not do so. */ |
| 489 | + if(fHide && isHidden){ | |
| 490 | + fossil_warning("Skipping hidden checkin %s: %s.", zName, zUuid); | |
| 491 | + continue; | |
| 492 | + }else if(!fHide && !isHidden){ | |
| 493 | + fossil_warning("Skipping non-hidden checkin %s: %s.", zName, zUuid); | |
| 494 | + continue; | |
| 495 | + } | |
| 488 | 496 | branch_cmd_tag_add(rid, fHide ? "*hidden" : "-hidden"); |
| 489 | 497 | if(fVerbose!=0){ |
| 490 | 498 | fossil_print("%s checkin [%s] %s\n", |
| 491 | 499 | fHide ? "Hiding" : "Unhiding", |
| 492 | 500 | zName, zUuid); |
| 493 | 501 |
| --- src/branch.c | |
| +++ src/branch.c | |
| @@ -480,13 +480,21 @@ | |
| 480 | verify_all_options(); |
| 481 | db_begin_transaction(); |
| 482 | for( ; argPos < g.argc; fossil_free(zUuid), ++argPos ){ |
| 483 | const char * zName = g.argv[argPos]; |
| 484 | const int rid = branch_resolve_name(zName, &zUuid); |
| 485 | /* Potential TODO: check for existing 'hidden' flag and skip this |
| 486 | ** entry if it already has (if fHide) or does not have (if !fHide) |
| 487 | ** that tag. FWIW, /ci_edit does not do so. */ |
| 488 | branch_cmd_tag_add(rid, fHide ? "*hidden" : "-hidden"); |
| 489 | if(fVerbose!=0){ |
| 490 | fossil_print("%s checkin [%s] %s\n", |
| 491 | fHide ? "Hiding" : "Unhiding", |
| 492 | zName, zUuid); |
| 493 |
| --- src/branch.c | |
| +++ src/branch.c | |
| @@ -480,13 +480,21 @@ | |
| 480 | verify_all_options(); |
| 481 | db_begin_transaction(); |
| 482 | for( ; argPos < g.argc; fossil_free(zUuid), ++argPos ){ |
| 483 | const char * zName = g.argv[argPos]; |
| 484 | const int rid = branch_resolve_name(zName, &zUuid); |
| 485 | const int isHidden = tag_has(rid, TAG_HIDDEN); |
| 486 | /* Potential TODO: check for existing 'hidden' flag and skip this |
| 487 | ** entry if it already has (if fHide) or does not have (if !fHide) |
| 488 | ** that tag. FWIW, /ci_edit does not do so. */ |
| 489 | if(fHide && isHidden){ |
| 490 | fossil_warning("Skipping hidden checkin %s: %s.", zName, zUuid); |
| 491 | continue; |
| 492 | }else if(!fHide && !isHidden){ |
| 493 | fossil_warning("Skipping non-hidden checkin %s: %s.", zName, zUuid); |
| 494 | continue; |
| 495 | } |
| 496 | branch_cmd_tag_add(rid, fHide ? "*hidden" : "-hidden"); |
| 497 | if(fVerbose!=0){ |
| 498 | fossil_print("%s checkin [%s] %s\n", |
| 499 | fHide ? "Hiding" : "Unhiding", |
| 500 | zName, zUuid); |
| 501 |
+14
| --- src/tag.c | ||
| +++ src/tag.c | ||
| @@ -889,5 +889,19 @@ | ||
| 889 | 889 | www_print_timeline(&q, tmFlags, 0, 0, 0, 0, 0, 0); |
| 890 | 890 | db_finalize(&q); |
| 891 | 891 | @ <br /> |
| 892 | 892 | style_finish_page(); |
| 893 | 893 | } |
| 894 | + | |
| 895 | +/* | |
| 896 | +** Returns true if the given blob.rid value has the given tag ID | |
| 897 | +** applied to it, else false. | |
| 898 | +*/ | |
| 899 | +int tag_has(int rid, int tagId){ | |
| 900 | + return db_exists( | |
| 901 | + "SELECT tag.tagid FROM tagxref, tag" | |
| 902 | + " WHERE tagxref.rid=%d AND tagtype>0 " | |
| 903 | + " AND tag.tagid=%d" | |
| 904 | + " AND tagxref.tagid=tag.tagid", | |
| 905 | + rid, tagId | |
| 906 | + ); | |
| 907 | +} | |
| 894 | 908 |
| --- src/tag.c | |
| +++ src/tag.c | |
| @@ -889,5 +889,19 @@ | |
| 889 | www_print_timeline(&q, tmFlags, 0, 0, 0, 0, 0, 0); |
| 890 | db_finalize(&q); |
| 891 | @ <br /> |
| 892 | style_finish_page(); |
| 893 | } |
| 894 |
| --- src/tag.c | |
| +++ src/tag.c | |
| @@ -889,5 +889,19 @@ | |
| 889 | www_print_timeline(&q, tmFlags, 0, 0, 0, 0, 0, 0); |
| 890 | db_finalize(&q); |
| 891 | @ <br /> |
| 892 | style_finish_page(); |
| 893 | } |
| 894 | |
| 895 | /* |
| 896 | ** Returns true if the given blob.rid value has the given tag ID |
| 897 | ** applied to it, else false. |
| 898 | */ |
| 899 | int tag_has(int rid, int tagId){ |
| 900 | return db_exists( |
| 901 | "SELECT tag.tagid FROM tagxref, tag" |
| 902 | " WHERE tagxref.rid=%d AND tagtype>0 " |
| 903 | " AND tag.tagid=%d" |
| 904 | " AND tagxref.tagid=tag.tagid", |
| 905 | rid, tagId |
| 906 | ); |
| 907 | } |
| 908 |