@@ -159,7 +159,7 @@ impl crate::Repository {
159159 Ok ( match head. inner . target {
160160 Target :: Symbolic ( branch) => match self . find_reference ( & branch) {
161161 Ok ( r) => crate :: head:: Kind :: Symbolic ( r. detach ( ) ) ,
162- Err ( reference:: find:: existing:: Error :: NotFound ) => crate :: head:: Kind :: Unborn ( branch) ,
162+ Err ( reference:: find:: existing:: Error :: NotFound { .. } ) => crate :: head:: Kind :: Unborn ( branch) ,
163163 Err ( err) => return Err ( err) ,
164164 } ,
165165 Target :: Object ( target) => crate :: head:: Kind :: Detached {
@@ -222,11 +222,19 @@ impl crate::Repository {
222222 /// without that being considered an error.
223223 pub fn find_reference < ' a , Name , E > ( & self , name : Name ) -> Result < Reference < ' _ > , reference:: find:: existing:: Error >
224224 where
225- Name : TryInto < & ' a PartialNameRef , Error = E > ,
225+ Name : TryInto < & ' a PartialNameRef , Error = E > + Clone ,
226226 gix_ref:: file:: find:: Error : From < E > ,
227227 {
228+ // TODO: is there a way to just pass `partial_name` to `try_find_reference()`? Compiler freaks out then
229+ // as it still wants to see `E` there, not `Infallible`.
230+ let partial_name = name
231+ . clone ( )
232+ . try_into ( )
233+ . map_err ( |err| reference:: find:: Error :: Find ( gix_ref:: file:: find:: Error :: from ( err) ) ) ?;
228234 self . try_find_reference ( name) ?
229- . ok_or ( reference:: find:: existing:: Error :: NotFound )
235+ . ok_or_else ( || reference:: find:: existing:: Error :: NotFound {
236+ name : partial_name. to_owned ( ) ,
237+ } )
230238 }
231239
232240 /// Return a platform for iterating references.
@@ -249,8 +257,7 @@ impl crate::Repository {
249257 Name : TryInto < & ' a PartialNameRef , Error = E > ,
250258 gix_ref:: file:: find:: Error : From < E > ,
251259 {
252- let state = self ;
253- match state. refs . try_find ( name) {
260+ match self . refs . try_find ( name) {
254261 Ok ( r) => match r {
255262 Some ( r) => Ok ( Some ( Reference :: from_ref ( r, self ) ) ) ,
256263 None => Ok ( None ) ,
0 commit comments