Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add the ability for 'branch list' to filter the branches that have/have not been merged into the current branch, per forum request. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | branch-list-merged-unmerged |
Files: | files | file ages | folders |
SHA3-256: |
d6ddd5bcfa2cac02987530f6e39ab36a |
User & Date: | danield 2023-06-14 14:37:10 |
References
2023-06-15
| ||
19:12 | Fix a gap positions vs. adjacent chunks positions mix-up in the diff context loader. The test case to reveal this bug is the 2nd gap of commit diff [d6ddd5bcfa]. Congrats again to Stephan for this smart code! ... (check-in: 8347c4ad user: florian tags: trunk) | |
Context
2023-09-14
| ||
08:25 | Add the ability for 'branch list' to filter the branches that have/have not been merged into the current branch. ... (check-in: 8ff63db2 user: danield tags: trunk) | |
2023-06-14
| ||
14:37 | Add the ability for 'branch list' to filter the branches that have/have not been merged into the current branch, per forum request. ... (Closed-Leaf check-in: d6ddd5bc user: danield tags: branch-list-merged-unmerged) | |
14:29 | Remove a longtime obsolete comment in the branch listing routine. ... (check-in: ebe81aa1 user: danield tags: trunk) | |
Changes
Changes to src/branch.c.
︙ | ︙ | |||
274 275 276 277 278 279 280 281 282 283 284 285 286 287 | #define BRL_CLOSED_ONLY 0x001 /* Show only closed branches */ #define BRL_OPEN_ONLY 0x002 /* Show only open branches */ #define BRL_BOTH 0x003 /* Show both open and closed branches */ #define BRL_OPEN_CLOSED_MASK 0x003 #define BRL_ORDERBY_MTIME 0x004 /* Sort by MTIME. (otherwise sort by name)*/ #define BRL_REVERSE 0x008 /* Reverse the sort order */ #define BRL_PRIVATE 0x010 /* Show only private branches */ #endif /* INTERFACE */ /* ** Prepare a query that will list branches. ** ** If the BRL_ORDERBY_MTIME flag is set and nLimitMRU ("Limit Most Recently Used | > > | 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 | #define BRL_CLOSED_ONLY 0x001 /* Show only closed branches */ #define BRL_OPEN_ONLY 0x002 /* Show only open branches */ #define BRL_BOTH 0x003 /* Show both open and closed branches */ #define BRL_OPEN_CLOSED_MASK 0x003 #define BRL_ORDERBY_MTIME 0x004 /* Sort by MTIME. (otherwise sort by name)*/ #define BRL_REVERSE 0x008 /* Reverse the sort order */ #define BRL_PRIVATE 0x010 /* Show only private branches */ #define BRL_MERGED 0x020 /* Show only merged branches */ #define BRL_UNMERGED 0x040 /* Show only unmerged branches */ #endif /* INTERFACE */ /* ** Prepare a query that will list branches. ** ** If the BRL_ORDERBY_MTIME flag is set and nLimitMRU ("Limit Most Recently Used |
︙ | ︙ | |||
303 304 305 306 307 308 309 | blob_init(&sql, 0, 0); brlist_create_temp_table(); /* Ignore nLimitMRU if no chronological sort requested. */ if( (brFlags & BRL_ORDERBY_MTIME)==0 ) nLimitMRU = 0; /* Undocumented: invert negative values for nLimitMRU, so that command-line ** arguments similar to `head -5' with "option numbers" are possible. */ if( nLimitMRU<0 ) nLimitMRU = -nLimitMRU; | | | | | > | 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 | blob_init(&sql, 0, 0); brlist_create_temp_table(); /* Ignore nLimitMRU if no chronological sort requested. */ if( (brFlags & BRL_ORDERBY_MTIME)==0 ) nLimitMRU = 0; /* Undocumented: invert negative values for nLimitMRU, so that command-line ** arguments similar to `head -5' with "option numbers" are possible. */ if( nLimitMRU<0 ) nLimitMRU = -nLimitMRU; blob_append_sql(&sql,"SELECT name, isprivate, mergeto FROM ("); /* OUTER QUERY */ switch( brFlags & BRL_OPEN_CLOSED_MASK ){ case BRL_CLOSED_ONLY: { blob_append_sql(&sql, "SELECT name, isprivate, mtime, mergeto FROM tmp_brlist WHERE isclosed" ); break; } case BRL_BOTH: { blob_append_sql(&sql, "SELECT name, isprivate, mtime, mergeto FROM tmp_brlist WHERE 1" ); break; } case BRL_OPEN_ONLY: { blob_append_sql(&sql, "SELECT name, isprivate, mtime, mergeto FROM tmp_brlist WHERE NOT isclosed" ); break; } } if( brFlags & BRL_PRIVATE ) blob_append_sql(&sql, " AND isprivate"); if( brFlags & BRL_MERGED ) blob_append_sql(&sql, " AND mergeto IS NOT NULL"); if(zBrNameGlob) blob_append_sql(&sql, " AND (name GLOB %Q)", zBrNameGlob); if( brFlags & BRL_ORDERBY_MTIME ){ blob_append_sql(&sql, " ORDER BY -mtime"); }else{ blob_append_sql(&sql, " ORDER BY name COLLATE nocase"); } if( brFlags & BRL_REVERSE && !nLimitMRU ){ |
︙ | ︙ | |||
611 612 613 614 615 616 617 618 619 620 621 622 623 624 | ** > fossil branch lsh ?OPTIONS? ?LIMIT? ** ** List all branches. ** ** Options: ** -a|--all List all branches. Default show only open branches ** -c|--closed List closed branches ** -p List only private branches ** -r Reverse the sort order ** -t Show recently changed branches first ** ** The current branch is marked with an asterisk. Private branches are ** marked with a hash sign. ** | > > | 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 | ** > fossil branch lsh ?OPTIONS? ?LIMIT? ** ** List all branches. ** ** Options: ** -a|--all List all branches. Default show only open branches ** -c|--closed List closed branches ** -m|--merged List branches merged into the current branch ** -M|--unmerged List branches not merged into the current branch ** -p List only private branches ** -r Reverse the sort order ** -t Show recently changed branches first ** ** The current branch is marked with an asterisk. Private branches are ** marked with a hash sign. ** |
︙ | ︙ | |||
692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 | int nLimit = 0; int brFlags = BRL_OPEN_ONLY; if( find_option("all","a",0)!=0 ) brFlags = BRL_BOTH; if( find_option("closed","c",0)!=0 ) brFlags = BRL_CLOSED_ONLY; if( find_option("t",0,0)!=0 ) brFlags |= BRL_ORDERBY_MTIME; if( find_option("r",0,0)!=0 ) brFlags |= BRL_REVERSE; if( find_option("p",0,0)!=0 ) brFlags |= BRL_PRIVATE; if( strcmp(zCmd, "lsh")==0 ){ nLimit = 5; if( g.argc>4 || (g.argc==4 && (nLimit = atoi(g.argv[3]))==0) ){ fossil_fatal("the lsh subcommand allows one optional numeric argument"); } brFlags |= BRL_ORDERBY_MTIME; }else{ if( g.argc >= 4 ) zBrNameGlob = g.argv[3]; } if( g.localOpen ){ vid = db_lget_int("checkout", 0); zCurrent = db_text(0, "SELECT value FROM tagxref" " WHERE rid=%d AND tagid=%d", vid, TAG_BRANCH); } branch_prepare_list_query(&q, brFlags, zBrNameGlob, nLimit); while( db_step(&q)==SQLITE_ROW ){ const char *zBr = db_column_text(&q, 0); int isPriv = zCurrent!=0 && db_column_int(&q, 1)==1; int isCur = zCurrent!=0 && fossil_strcmp(zCurrent,zBr)==0; fossil_print("%s%s%s\n", ( (brFlags & BRL_PRIVATE) ? " " : ( isPriv ? "#" : " ") ), (isCur ? "* " : " "), zBr); } db_finalize(&q); }else if( strncmp(zCmd,"new",n)==0 ){ branch_new(); | > > > > > > > > > > > > > | 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 | int nLimit = 0; int brFlags = BRL_OPEN_ONLY; if( find_option("all","a",0)!=0 ) brFlags = BRL_BOTH; if( find_option("closed","c",0)!=0 ) brFlags = BRL_CLOSED_ONLY; if( find_option("t",0,0)!=0 ) brFlags |= BRL_ORDERBY_MTIME; if( find_option("r",0,0)!=0 ) brFlags |= BRL_REVERSE; if( find_option("p",0,0)!=0 ) brFlags |= BRL_PRIVATE; if( find_option("merged","m",0)!=0 ) brFlags |= BRL_MERGED; if( find_option("unmerged","M",0)!=0 ) brFlags |= BRL_UNMERGED; if ( (brFlags & BRL_MERGED) && (brFlags & BRL_UNMERGED) ){ fossil_fatal("flags --merged and --unmerged are mutually exclusive"); } if( strcmp(zCmd, "lsh")==0 ){ nLimit = 5; if( g.argc>4 || (g.argc==4 && (nLimit = atoi(g.argv[3]))==0) ){ fossil_fatal("the lsh subcommand allows one optional numeric argument"); } brFlags |= BRL_ORDERBY_MTIME; }else{ if( g.argc >= 4 ) zBrNameGlob = g.argv[3]; } if( g.localOpen ){ vid = db_lget_int("checkout", 0); zCurrent = db_text(0, "SELECT value FROM tagxref" " WHERE rid=%d AND tagid=%d", vid, TAG_BRANCH); } branch_prepare_list_query(&q, brFlags, zBrNameGlob, nLimit); while( db_step(&q)==SQLITE_ROW ){ const char *zBr = db_column_text(&q, 0); int isPriv = zCurrent!=0 && db_column_int(&q, 1)==1; const char *zMergeTo = db_column_text(&q, 2); int isCur = zCurrent!=0 && fossil_strcmp(zCurrent,zBr)==0; if( (brFlags & BRL_MERGED) && fossil_strcmp(zCurrent,zMergeTo)!=0 ){ continue; } if( (brFlags & BRL_UNMERGED) && (fossil_strcmp(zCurrent,zMergeTo)==0 || isCur) ){ continue; } fossil_print("%s%s%s\n", ( (brFlags & BRL_PRIVATE) ? " " : ( isPriv ? "#" : " ") ), (isCur ? "* " : " "), zBr); } db_finalize(&q); }else if( strncmp(zCmd,"new",n)==0 ){ branch_new(); |
︙ | ︙ |