@@ -229,58 +229,47 @@ func (r *GitRepositoryReconciler) reconcile(ctx context.Context, repository sour
229229 }
230230 defer os .RemoveAll (tmpGit )
231231
232- // determine auth method
233- auth := & git.Auth {}
232+ // Configure auth options using secret
233+ var authOpts * git.AuthOptions
234234 if repository .Spec .SecretRef != nil {
235- authStrategy , err := strategy .AuthSecretStrategyForURL (
236- repository .Spec .URL ,
237- git.CheckoutOptions {
238- GitImplementation : repository .Spec .GitImplementation ,
239- RecurseSubmodules : repository .Spec .RecurseSubmodules ,
240- })
241- if err != nil {
242- return sourcev1 .GitRepositoryNotReady (repository , sourcev1 .AuthenticationFailedReason , err .Error ()), err
243- }
244-
245235 name := types.NamespacedName {
246236 Namespace : repository .GetNamespace (),
247237 Name : repository .Spec .SecretRef .Name ,
248238 }
249239
250- var secret corev1.Secret
251- err = r .Client .Get (ctx , name , & secret )
240+ secret := & corev1.Secret {}
241+ err = r .Client .Get (ctx , name , secret )
252242 if err != nil {
253243 err = fmt .Errorf ("auth secret error: %w" , err )
254244 return sourcev1 .GitRepositoryNotReady (repository , sourcev1 .AuthenticationFailedReason , err .Error ()), err
255245 }
256246
257- auth , err = authStrategy . Method ( secret )
247+ authOpts , err = git . AuthOptionsFromSecret ( repository . Spec . URL , secret )
258248 if err != nil {
259- err = fmt .Errorf ("auth error: %w" , err )
260249 return sourcev1 .GitRepositoryNotReady (repository , sourcev1 .AuthenticationFailedReason , err .Error ()), err
261250 }
262251 }
263-
264- checkoutStrategy , err := strategy .CheckoutStrategyForRef (
265- repository .Spec .Reference ,
266- git.CheckoutOptions {
267- GitImplementation : repository .Spec .GitImplementation ,
268- RecurseSubmodules : repository .Spec .RecurseSubmodules ,
269- },
270- )
252+ checkoutOpts := git.CheckoutOptions {RecurseSubmodules : repository .Spec .RecurseSubmodules }
253+ if ref := repository .Spec .Reference ; ref != nil {
254+ checkoutOpts .Branch = ref .Branch
255+ checkoutOpts .Commit = ref .Commit
256+ checkoutOpts .Tag = ref .Tag
257+ checkoutOpts .SemVer = ref .SemVer
258+ }
259+ checkoutStrategy , err := strategy .CheckoutStrategyForImplementation (ctx ,
260+ git .Implementation (repository .Spec .GitImplementation ), checkoutOpts )
271261 if err != nil {
272262 return sourcev1 .GitRepositoryNotReady (repository , sourcev1 .GitOperationFailedReason , err .Error ()), err
273263 }
274264
275265 gitCtx , cancel := context .WithTimeout (ctx , repository .Spec .Timeout .Duration )
276266 defer cancel ()
277267
278- commit , revision , err := checkoutStrategy .Checkout (gitCtx , tmpGit , repository .Spec .URL , auth )
268+ commit , err := checkoutStrategy .Checkout (gitCtx , tmpGit , repository .Spec .URL , authOpts )
279269 if err != nil {
280270 return sourcev1 .GitRepositoryNotReady (repository , sourcev1 .GitOperationFailedReason , err .Error ()), err
281271 }
282-
283- artifact := r .Storage .NewArtifactFor (repository .Kind , repository .GetObjectMeta (), revision , fmt .Sprintf ("%s.tar.gz" , commit .Hash ()))
272+ artifact := r .Storage .NewArtifactFor (repository .Kind , repository .GetObjectMeta (), commit .String (), fmt .Sprintf ("%s.tar.gz" , commit .Hash .String ()))
284273
285274 // copy all included repository into the artifact
286275 includedArtifacts := []* sourcev1.Artifact {}
@@ -309,14 +298,17 @@ func (r *GitRepositoryReconciler) reconcile(ctx context.Context, repository sour
309298 Namespace : repository .Namespace ,
310299 Name : repository .Spec .Verification .SecretRef .Name ,
311300 }
312- var secret corev1.Secret
313- if err := r .Client .Get (ctx , publicKeySecret , & secret ); err != nil {
301+ var secret * corev1.Secret
302+ if err := r .Client .Get (ctx , publicKeySecret , secret ); err != nil {
314303 err = fmt .Errorf ("PGP public keys secret error: %w" , err )
315304 return sourcev1 .GitRepositoryNotReady (repository , sourcev1 .VerificationFailedReason , err .Error ()), err
316305 }
317306
318- err := commit .Verify (secret )
319- if err != nil {
307+ var keyRings []string
308+ for _ , v := range secret .Data {
309+ keyRings = append (keyRings , string (v ))
310+ }
311+ if _ , err = commit .Verify (keyRings ... ); err != nil {
320312 return sourcev1 .GitRepositoryNotReady (repository , sourcev1 .VerificationFailedReason , err .Error ()), err
321313 }
322314 }
0 commit comments