@@ -122,8 +122,9 @@ pub(crate) fn worktree(
122
122
i == 0 ,
123
123
) ?;
124
124
}
125
+ let dot = "●" . purple ( ) ;
125
126
println ! (
126
- " ● {} (common base) [{}] {}" ,
127
+ " {dot} {} (common base) [{}] {}" ,
127
128
common_merge_base_data. common_merge_base. dimmed( ) ,
128
129
common_merge_base_data. target_name. green( ) . bold( ) ,
129
130
common_merge_base_data. message
@@ -254,14 +255,26 @@ pub fn print_group(
254
255
"" . to_string ( ) . normal ( )
255
256
} ;
256
257
258
+ let dot = match commit. state {
259
+ but_workspace:: ui:: CommitState :: LocalOnly => "●" . normal ( ) ,
260
+ but_workspace:: ui:: CommitState :: LocalAndRemote ( object_id) => {
261
+ if object_id == commit. id {
262
+ "●" . green ( )
263
+ } else {
264
+ "◐" . green ( )
265
+ }
266
+ }
267
+ but_workspace:: ui:: CommitState :: Integrated => "●" . purple ( ) ,
268
+ } ;
269
+
257
270
if verbose {
258
271
// Verbose format: author and timestamp on first line, message on second line
259
272
let datetime = DateTime :: from_timestamp_millis ( commit. created_at as i64 )
260
273
. unwrap_or_else ( || Utc . timestamp_millis_opt ( 0 ) . unwrap ( ) ) ;
261
274
let formatted_time = datetime. format ( "%Y-%m-%d %H:%M:%S" ) ;
262
275
263
276
println ! (
264
- "● {}{} {} {} {} {} {}" ,
277
+ "{dot} {}{} {} {} {} {} {}" ,
265
278
& commit. id. to_string( ) [ ..2 ] . blue( ) . underline( ) ,
266
279
& commit. id. to_string( ) [ 2 ..7 ] . dimmed( ) ,
267
280
commit. author. name,
@@ -274,7 +287,7 @@ pub fn print_group(
274
287
} else {
275
288
// Original format: everything on one line
276
289
println ! (
277
- "● {}{} {} {} {} {}" ,
290
+ "{dot} {}{} {} {} {} {}" ,
278
291
& commit. id. to_string( ) [ ..2 ] . blue( ) . underline( ) ,
279
292
& commit. id. to_string( ) [ 2 ..7 ] . dimmed( ) ,
280
293
message,
0 commit comments