@@ -15,11 +15,14 @@ import (
1515
1616 "github.com/Azure/azure-sdk-for-go/eng/tools/generator/repo"
1717 "github.com/Azure/azure-sdk-for-go/eng/tools/internal/exports"
18+ "github.com/go-git/go-git/v5"
19+ "github.com/go-git/go-git/v5/config"
1820 "github.com/go-git/go-git/v5/plumbing"
1921)
2022
2123const (
2224 sdk_tag_fetch_url = "https://api.github.com/repos/Azure/azure-sdk-for-go/git/refs/tags"
25+ sdk_remote_url = "https://github.com/Azure/azure-sdk-for-go.git"
2326)
2427
2528func GetAllVersionTags (rpName , namespaceName string ) ([]string , error ) {
@@ -110,6 +113,23 @@ func GetExportsFromTag(sdkRepo repo.SDKRepository, packagePath, tag string) (*ex
110113 return nil , err
111114 }
112115
116+ // create remote with center sdk repo
117+ remoteName := "release_remote"
118+ _ , err = sdkRepo .CreateRemote (& config.RemoteConfig {Name : remoteName , URLs : []string {sdk_remote_url }})
119+ if err != nil {
120+ if err != git .ErrRemoteExists {
121+ return nil , err
122+ }
123+ }
124+
125+ // fetch tag from remote
126+ err = sdkRepo .Fetch (& git.FetchOptions {RemoteName : remoteName , RefSpecs : []config.RefSpec {config .RefSpec (tag + ":" + tag )}})
127+ if err != nil {
128+ if err .Error () != "already up-to-date" {
129+ return nil , err
130+ }
131+ }
132+
113133 // checkout to the specific tag
114134 err = sdkRepo .CheckoutTag (strings .TrimPrefix (tag , "ref/tags/" ))
115135 if err != nil {
@@ -130,6 +150,12 @@ func GetExportsFromTag(sdkRepo repo.SDKRepository, packagePath, tag string) (*ex
130150 return nil , err
131151 }
132152
153+ // remove remote
154+ err = sdkRepo .DeleteRemote (remoteName )
155+ if err != nil {
156+ return nil , err
157+ }
158+
133159 // restore current change
134160 err = sdkRepo .StashPop ()
135161 if err != nil {
0 commit comments