🤖

🤖

:gijutsu_burogu:

Go Module: forkしたpackageをimportし利用する方法

やりたいこと

github.com/someone/hogegithub.com/forked/fugaをimportして利用したいです。 関係性は以下です。

どうやるか

https://github.com/elastic/cloud-sdk-goをforkしてhttps://github.com/kotaroooo0/cloud-sdk-goリポジトリがあるとします。 第三のリポジトリhttps://github.com/kotaroooo0/poc-validate-onlyからhttps://github.com/kotaroooo0/cloud-sdk-goをimportして利用したいとします。

手順

1.https://github.com/kotaroooo0/cloud-sdk-goでGitのタグ打ちをします。

$ git tag v1.0.0

$ git push origin  v1.0.0

2.https://github.com/kotaroooo0/poc-validate-only/blob/main/go.mod#L7のようにreplaceを使います。

module github.com/kotaroooo0/poc-validate-only

go 1.21.7

require github.com/elastic/cloud-sdk-go v1.16.0

replace github.com/elastic/cloud-sdk-go v1.16.0 => github.com/kotaroooo0/cloud-sdk-go v1.0.0

これだけで第三のリポジトリhttps://github.com/kotaroooo0/poc-validate-onlyからhttps://github.com/kotaroooo0/cloud-sdk-goを利用できます。

備考

https://github.com/kotaroooo0/poc-validate-onlyではimportの部分は変更する必要なし

以下のように既存でimportしていたgithub.com/elastic/cloud-sdk-goは触らなくても自動でgithub.com/kotaroooo0/cloud-sdk-goをimportし参照してくれます。

https://github.com/kotaroooo0/poc-validate-only/blob/main/main.go#L3-L15

originalに参照を戻す方法

以下を消せばまたgithub.com/elastic/cloud-sdk-go を参照するように戻ります。

replace github.com/elastic/cloud-sdk-go v1.16.0 => github.com/kotaroooo0/cloud-sdk-go v1.0.0

github.com/kotaroooo0/cloud-sdk-goのgo.modについて

以下のようにgithub.com/kotaroooo0/cloud-sdk-goのgo.modはForkした時のまま変更する必要はありません。 module名も変更する必要はありません。

https://github.com/kotaroooo0/cloud-sdk-go/blob/update-deployment-validate-only-params/go.mod

参考

go.dev