I recently had to move private repositories from SaaS Gitlab to an on-premise version. Everything was going well where I did:
- Update old go module paths in repo
- Add a new tag
v1.2.3-newto the latest commit
- Update repo
bto reference latest tag
go mod tidyin repo
band verify it works
Now I have a requirement to reference an older version tag of
old.com/workspace/a). So in repo
a, I checked out the older tag, fixed up the module path to
old.com/workspace/a and tagged it as
b then I referenced
v1.1.1-new. However, this results in:
go: firstname.lastname@example.org: parsing go.mod: module declares its path as: old.com/workspace/b but was required as: new.com/workspace/b
If I check the
v1.1.1-new tag in repo
a, the module path is set correctly in the
It is unclear to me why it works with the tag
v1.2.3-new on the latest commit but fails when I reference an older commit.
So I can’t say I fully understood why this worked but here are the steps that made it work (including what didn’t).
I resorted to clearing the cache with
go clean -modcache
Tested with the following but it still failed.
go get email@example.com
As per my comment in the original question, this worked via the
v1.1.1-newcommit hash So I resorted to that again.
go get new.com/workspace/a@27ca81f7
Now it picked up the version for that commit and was successful. The
go.modfile was also correctly updated with the tag/version despite
using the commit hash in the