@@ -21,8 +21,16 @@ type GithubAppWorkingDir struct {
21
21
22
22
// Clone writes a fresh token for Github App authentication
23
23
func (g * GithubAppWorkingDir ) Clone (logger logging.SimpleLogging , headRepo models.Repo , p models.PullRequest , workspace string ) (string , error ) {
24
- baseRepo := & p .BaseRepo
24
+ g .fixReposURL (& p , & headRepo )
25
+ return g .WorkingDir .Clone (logger , headRepo , p , workspace )
26
+ }
25
27
28
+ func (g * GithubAppWorkingDir ) MergeAgain (logger logging.SimpleLogging , headRepo models.Repo , p models.PullRequest , workspace string ) (bool , error ) {
29
+ g .fixReposURL (& p , & headRepo )
30
+ return g .WorkingDir .MergeAgain (logger , headRepo , p , workspace )
31
+ }
32
+
33
+ func (g * GithubAppWorkingDir ) fixReposURL (p * models.PullRequest , headRepo * models.Repo ) {
26
34
// Realistically, this is a super brittle way of supporting clones using gh app installation tokens
27
35
// This URL should be built during Repo creation and the struct should be immutable going forward.
28
36
// Doing this requires a larger refactor however, and can probably be coupled with supporting > 1 installation
@@ -31,10 +39,9 @@ func (g *GithubAppWorkingDir) Clone(logger logging.SimpleLogging, headRepo model
31
39
// git will then pick up credentials from the credential store which is set in vcs.WriteGitCreds.
32
40
// Git credentials will then be rotated by vcs.GitCredsTokenRotator
33
41
replacement := "://"
34
- baseRepo . CloneURL = strings .Replace (baseRepo .CloneURL , "://:@" , replacement , 1 )
35
- baseRepo . SanitizedCloneURL = strings .Replace (baseRepo .SanitizedCloneURL , redactedReplacement , replacement , 1 )
42
+ p . BaseRepo . CloneURL = strings .Replace (p . BaseRepo .CloneURL , "://:@" , replacement , 1 )
43
+ p . BaseRepo . SanitizedCloneURL = strings .Replace (p . BaseRepo .SanitizedCloneURL , redactedReplacement , replacement , 1 )
36
44
headRepo .CloneURL = strings .Replace (headRepo .CloneURL , "://:@" , replacement , 1 )
37
- headRepo .SanitizedCloneURL = strings .Replace (baseRepo .SanitizedCloneURL , redactedReplacement , replacement , 1 )
45
+ headRepo .SanitizedCloneURL = strings .Replace (p . BaseRepo .SanitizedCloneURL , redactedReplacement , replacement , 1 )
38
46
39
- return g .WorkingDir .Clone (logger , headRepo , p , workspace )
40
47
}
0 commit comments