@@ -203,7 +203,7 @@ impl<'a> Repo<'a> {
203
203
let current_time = commit. time ( ) ?. seconds ( ) ;
204
204
if current_time > most_recent {
205
205
most_recent = current_time;
206
- version_name = tag. name ( ) . strip_prefix ( ) . to_string ( ) ;
206
+ version_name = tag. name ( ) . shorten ( ) . to_string ( ) ;
207
207
}
208
208
}
209
209
}
@@ -301,20 +301,24 @@ impl<'a> Repo<'a> {
301
301
}
302
302
303
303
pub fn get_head_refs ( & self ) -> Result < HeadRefs > {
304
- let head = self . git2_repo . head ( ) ?;
305
- let head_oid = head. target ( ) . with_context ( || "Could not read HEAD" ) ?;
306
- let refs = self . git2_repo . references ( ) ?;
307
- let refs_info = refs
308
- . filter_map ( |reference| match reference {
309
- Ok ( reference) => match ( reference. target ( ) , reference. shorthand ( ) ) {
310
- ( Some ( oid) , Some ( shorthand) ) if oid == head_oid && !reference. is_tag ( ) => {
311
- Some ( String :: from ( shorthand) )
312
- }
313
- _ => None ,
314
- } ,
315
- Err ( _) => None ,
304
+ let head_oid = self
305
+ . repo
306
+ . head ( )
307
+ . with_context ( || "Could not read HEAD" ) ?
308
+ . peel_to_commit_in_place ( ) ?
309
+ . id ;
310
+ let refs_info = self
311
+ . repo
312
+ . references ( ) ?
313
+ . all ( ) ?
314
+ . peeled ( )
315
+ . filter_map ( Result :: ok)
316
+ . filter_map ( |reference : git:: Reference < ' _ > | {
317
+ ( reference. id ( ) == head_oid
318
+ && reference. name ( ) . category ( ) != Some ( git:: reference:: Category :: Tag ) )
319
+ . then ( || reference. name ( ) . shorten ( ) . to_string ( ) )
316
320
} )
317
- . collect :: < Vec < String > > ( ) ;
321
+ . collect ( ) ;
318
322
Ok ( HeadRefs :: new ( head_oid, refs_info) )
319
323
}
320
324
0 commit comments