Fossil SCM
Change the "branch list" command to provide output more like Git.
Commit
761a6a9dcfd808ff576c1851d79ce95b1f4a4a78
Parent
3c2500c7650ab33…
1 file changed
+24
-10
+24
-10
| --- src/branch.c | ||
| +++ src/branch.c | ||
| @@ -187,27 +187,41 @@ | ||
| 187 | 187 | ** List all branches |
| 188 | 188 | ** |
| 189 | 189 | */ |
| 190 | 190 | void branch_cmd(void){ |
| 191 | 191 | int n; |
| 192 | + const char *zCmd = "list"; | |
| 192 | 193 | db_find_and_open_repository(1); |
| 193 | - if( g.argc<3 ){ | |
| 194 | + if( g.argc<2 ){ | |
| 194 | 195 | usage("new|list ..."); |
| 195 | 196 | } |
| 196 | - n = strlen(g.argv[2]); | |
| 197 | - if( n>=2 && strncmp(g.argv[2],"new",n)==0 ){ | |
| 197 | + if( g.argc>=3 ) zCmd = g.argv[2]; | |
| 198 | + n = strlen(zCmd); | |
| 199 | + if( strncmp(zCmd,"new",n)==0 ){ | |
| 198 | 200 | branch_new(); |
| 199 | - }else if( n>=2 && strncmp(g.argv[2],"list",n)==0 ){ | |
| 201 | + }else if( strncmp(zCmd,"list",n)==0 ){ | |
| 200 | 202 | Stmt q; |
| 203 | + int vid; | |
| 204 | + char *zCurrent = 0; | |
| 205 | + | |
| 206 | + if( g.localOpen ){ | |
| 207 | + vid = db_lget_int("checkout", 0); | |
| 208 | + zCurrent = db_text(0, "SELECT value FROM tagxref" | |
| 209 | + " WHERE rid=%d AND tagid=%d", vid, TAG_BRANCH); | |
| 210 | + } | |
| 211 | + compute_leaves(0, 1); | |
| 201 | 212 | db_prepare(&q, |
| 202 | - "%s" | |
| 203 | - " AND blob.rid IN (SELECT rid FROM tagxref" | |
| 204 | - " WHERE tagid=%d AND tagtype==2 AND srcid!=0)" | |
| 205 | - " ORDER BY event.mtime DESC", | |
| 206 | - timeline_query_for_tty(), TAG_BRANCH | |
| 213 | + "SELECT DISTINCT value FROM tagxref" | |
| 214 | + " WHERE tagid=%d AND value NOT NULL AND rid IN leaves" | |
| 215 | + " ORDER BY value /*sort*/", | |
| 216 | + TAG_BRANCH | |
| 207 | 217 | ); |
| 208 | - print_timeline(&q, 2000); | |
| 218 | + while( db_step(&q)==SQLITE_ROW ){ | |
| 219 | + const char *zBr = db_column_text(&q, 0); | |
| 220 | + int isCur = zCurrent!=0 && strcmp(zCurrent,zBr)==0; | |
| 221 | + printf("%s%s\n", (isCur ? "* " : " "), zBr); | |
| 222 | + } | |
| 209 | 223 | db_finalize(&q); |
| 210 | 224 | }else{ |
| 211 | 225 | fossil_panic("branch subcommand should be one of: " |
| 212 | 226 | "new list"); |
| 213 | 227 | } |
| 214 | 228 |
| --- src/branch.c | |
| +++ src/branch.c | |
| @@ -187,27 +187,41 @@ | |
| 187 | ** List all branches |
| 188 | ** |
| 189 | */ |
| 190 | void branch_cmd(void){ |
| 191 | int n; |
| 192 | db_find_and_open_repository(1); |
| 193 | if( g.argc<3 ){ |
| 194 | usage("new|list ..."); |
| 195 | } |
| 196 | n = strlen(g.argv[2]); |
| 197 | if( n>=2 && strncmp(g.argv[2],"new",n)==0 ){ |
| 198 | branch_new(); |
| 199 | }else if( n>=2 && strncmp(g.argv[2],"list",n)==0 ){ |
| 200 | Stmt q; |
| 201 | db_prepare(&q, |
| 202 | "%s" |
| 203 | " AND blob.rid IN (SELECT rid FROM tagxref" |
| 204 | " WHERE tagid=%d AND tagtype==2 AND srcid!=0)" |
| 205 | " ORDER BY event.mtime DESC", |
| 206 | timeline_query_for_tty(), TAG_BRANCH |
| 207 | ); |
| 208 | print_timeline(&q, 2000); |
| 209 | db_finalize(&q); |
| 210 | }else{ |
| 211 | fossil_panic("branch subcommand should be one of: " |
| 212 | "new list"); |
| 213 | } |
| 214 |
| --- src/branch.c | |
| +++ src/branch.c | |
| @@ -187,27 +187,41 @@ | |
| 187 | ** List all branches |
| 188 | ** |
| 189 | */ |
| 190 | void branch_cmd(void){ |
| 191 | int n; |
| 192 | const char *zCmd = "list"; |
| 193 | db_find_and_open_repository(1); |
| 194 | if( g.argc<2 ){ |
| 195 | usage("new|list ..."); |
| 196 | } |
| 197 | if( g.argc>=3 ) zCmd = g.argv[2]; |
| 198 | n = strlen(zCmd); |
| 199 | if( strncmp(zCmd,"new",n)==0 ){ |
| 200 | branch_new(); |
| 201 | }else if( strncmp(zCmd,"list",n)==0 ){ |
| 202 | Stmt q; |
| 203 | int vid; |
| 204 | char *zCurrent = 0; |
| 205 | |
| 206 | if( g.localOpen ){ |
| 207 | vid = db_lget_int("checkout", 0); |
| 208 | zCurrent = db_text(0, "SELECT value FROM tagxref" |
| 209 | " WHERE rid=%d AND tagid=%d", vid, TAG_BRANCH); |
| 210 | } |
| 211 | compute_leaves(0, 1); |
| 212 | db_prepare(&q, |
| 213 | "SELECT DISTINCT value FROM tagxref" |
| 214 | " WHERE tagid=%d AND value NOT NULL AND rid IN leaves" |
| 215 | " ORDER BY value /*sort*/", |
| 216 | TAG_BRANCH |
| 217 | ); |
| 218 | while( db_step(&q)==SQLITE_ROW ){ |
| 219 | const char *zBr = db_column_text(&q, 0); |
| 220 | int isCur = zCurrent!=0 && strcmp(zCurrent,zBr)==0; |
| 221 | printf("%s%s\n", (isCur ? "* " : " "), zBr); |
| 222 | } |
| 223 | db_finalize(&q); |
| 224 | }else{ |
| 225 | fossil_panic("branch subcommand should be one of: " |
| 226 | "new list"); |
| 227 | } |
| 228 |